作者:timchungh
项目:gocar
func (this *homeController) get(w http.ResponseWriter, req *http.Request) {
vm := viewmodels.GetHome()
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
}
作者:obadonk
项目:psGoWebAp
func (this *categoryController) get(w http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
idRaw := vars["id"]
id, err := strconv.Atoi(idRaw)
if err != nil {
w.WriteHeader(404)
return
}
category, err := models.GetCategoryById(id)
if err != nil {
w.WriteHeader(404)
return
}
vm := viewmodels.GetCategoryPage(category.Title())
productVMs := []viewmodels.Product{}
for _, product := range category.Products() {
productVMs = append(productVMs, converters.ConvertProductToViewModel(product))
}
vm.Products = productVMs
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
}
作者:obadonk
项目:psGoWebAp
func (this *loginController) login(w http.ResponseWriter, req *http.Request) {
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
if req.Method == "POST" {
email := req.FormValue("email")
password := req.FormValue("password")
member, err := models.GetMember(email, password)
if err != nil {
responseWriter.Write([]byte(err.Error()))
return
}
session, err := models.CreateSession(member)
if err != nil {
responseWriter.Write([]byte(err.Error()))
return
}
var cookie http.Cookie
cookie.Name = "sessionId"
cookie.Value = session.SessionId()
responseWriter.Header().Add("Set-Cookie", cookie.String())
}
vm := viewmodels.GetLogin()
this.template.Execute(responseWriter, vm)
}
作者:Ikanan
项目:GolangWebAp
func (this *aboutController) get(w http.ResponseWriter, req *http.Request) {
skills := models.GetSkills()
skillsVM := []viewmodels.Skill{}
for _, modelSkills := range skills {
skillsVM = append(skillsVM, converter.ConvertSkillToViewModel(modelSkills))
}
vm := viewmodels.GetAbout()
vm.Skills = skillsVM
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
_, err := req.Cookie("goSessionId")
if err == nil {
vm.LoggedIn = true
} else {
vm.LoggedIn = false
}
this.template.Execute(responseWriter, vm)
defer responseWriter.Close()
}
作者:obadonk
项目:psGoWebAp
func serveResource(w http.ResponseWriter, req *http.Request) {
path := "public" + req.URL.Path
var contentType string
if strings.HasSuffix(path, ".css") {
contentType = "text/css"
} else if strings.HasSuffix(path, ".js") {
contentType = "application/javascript"
} else if strings.HasSuffix(path, ".png") {
contentType = "image/png"
} else if strings.HasSuffix(path, ".mp4") {
contentType = "video/mp4"
} else {
contentType = "text/plain"
}
f, err := os.Open(path)
if err != nil {
w.WriteHeader(404)
return
}
defer f.Close()
w.Header().Add("Content-Type", contentType)
// add gzip compression if possible
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
br := bufio.NewReader(f)
br.WriteTo(responseWriter)
}
作者:Ikanan
项目:GolangWebAp
func (this *categoryController) get(w http.ResponseWriter, req *http.Request) {
_, er := req.Cookie("goSessionId")
if er == nil {
// This expects a map for the parameters caught by the current request
vars := mux.Vars(req)
idRaw := vars["id"]
id, err := strconv.Atoi(idRaw)
if err == nil && id < 4 {
Products, _ := models.GetProductList(id)
productsVM := []viewmodels.Product{}
for _, modelProducts := range Products {
productsVM = append(productsVM, converter.ConvertProductsToViewModel(modelProducts))
}
vm := viewmodels.GetProducts()
vm.LoggedIn = true
vm.Products = productsVM
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
} else {
w.WriteHeader(404)
}
} else {
http.Redirect(w, req, "/home", http.StatusFound)
}
}
作者:obadonk
项目:psGoWebAp
func (this *productController) get(w http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
idRaw := vars["id"]
id, err := strconv.Atoi(idRaw)
if err != nil {
w.WriteHeader(404)
return
}
product, err := models.GetProductById(id)
if err != nil {
w.WriteHeader(404)
return
}
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
vm := viewmodels.GetProductPage(product.Name())
vm.Product = converters.ConvertProductToViewModel(product)
this.template.Execute(responseWriter, vm)
}
作者:Ikanan
项目:GolangWebAp
func (this *homeController) get(w http.ResponseWriter, req *http.Request) {
// Since this controller method is only responsible for a single VIEW, its implementation becomes really simple
// Grab a view model that is preconfigured with MOCK data using the VIEW model GETHOME
vm := viewmodels.GetHome()
// Tell the browser that we will be sending HTML by setting the content-type header on the response
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
_, err := req.Cookie("goSessionId")
if err == nil {
vm.LoggedIn = true
ckn, _ := req.Cookie("loggedName")
vm.LoggedName = ckn.Value
} else {
vm.LoggedIn = false
}
/* We execute the controllers template field.
This small/lite controlled funciton is important
Due the controllers position in the MVC pattern it is aware of both of the other layer. This makes it easy to use the
controller to handle things that really are the responsability of another portion of the application */
this.template.Execute(responseWriter, vm)
}
作者:obadonk
项目:psGoWebAp
func (this *standLocatorController) get(w http.ResponseWriter, req *http.Request) {
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
vm := viewmodels.GetStandLocator()
responseWriter.Header().Add("Content-Type", "text/html")
this.template.Execute(responseWriter, vm)
}
作者:brewinva
项目:mvc-webap
func (this *standLocatorController) apiSearch(w http.ResponseWriter, req *http.Request) {
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
responseWriter.Header().Add("Content-Type", "application/json")
vm := viewmodels.GetStandLocations()
data, err := json.Marshal(vm)
if err == nil {
responseWriter.Write(data)
} else {
responseWriter.WriteHeader(404)
}
}
作者:Ikanan
项目:GolangWebAp
func (this *homeController) login(w http.ResponseWriter, req *http.Request) {
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
responseWriter.Header().Add("Content-Type", "text/html")
vm := viewmodels.GetLogin()
if req.FormValue("submit") == "signup" {
http.Redirect(w, req, "/signup", http.StatusFound)
} else {
if req.Method == "POST" {
email := req.FormValue("email")
password := req.FormValue("password")
member, err := models.GetMember(email, password)
if err == nil {
session, err := models.CreateSession(member)
if err == nil {
var cookie http.Cookie
cookie.Name = "goSessionId"
cookie.Expires = time.Now().Add(10 * time.Minute)
cookie.Value = strconv.Itoa(session.MemberId())
responseWriter.Header().Add("Set-Cookie", cookie.String())
var cookie2 http.Cookie
cookie2.Name = "loggedName"
cookie2.Expires = time.Now().Add(10 * time.Minute)
cookie2.Value = member.FirstName()
responseWriter.Header().Add("Set-Cookie", cookie2.String())
}
vmh := viewmodels.GetHome()
vmh.LoggedIn = true
vmh.LoggedName = member.FirstName()
this.template.Execute(responseWriter, vmh)
} else {
this.loginTemplate.Execute(responseWriter, vm)
}
} else {
this.loginTemplate.Execute(responseWriter, vm)
}
}
}
作者:brewinva
项目:mvc-webapp-ol
func (this *productController) get(w http.ResponseWriter, req *http.Request) {
vars := mux.Vars(req)
idRaw := vars["id"]
id, err := strconv.Atoi(idRaw)
if err == nil {
vm := viewmodels.GetProduct(id)
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
} else {
w.WriteHeader(404)
}
}
作者:brewinva
项目:mvc-webap
func (this *categoriesController) get(w http.ResponseWriter, req *http.Request) {
categories := models.GetCategories()
categoriesVM := []viewmodels.Category{}
for _, category := range categories {
categoriesVM = append(categoriesVM, converters.ConvertCategoryToViewModel(category))
}
vm := viewmodels.GetCategories()
vm.Categories = categoriesVM
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
}
作者:obadonk
项目:psGoWebAp
func (this *profileController) handle(w http.ResponseWriter, req *http.Request) {
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
vm := viewmodels.GetProfile()
if req.Method == "POST" {
vm.User.Email = req.FormValue("email")
vm.User.FirstName = req.FormValue("firstName")
vm.User.LastName = req.FormValue("lastName")
vm.User.Stand.Address = req.FormValue("standAddress")
vm.User.Stand.City = req.FormValue("standCity")
vm.User.Stand.County = req.FormValue("standCounty")
vm.User.Stand.Postcode = req.FormValue("standPostcode")
}
responseWriter.Header().Add("Content-Type", "text/html")
this.template.Execute(responseWriter, vm)
}
作者:Ikanan
项目:GolangWebAp
func (this *homeController) signup(w http.ResponseWriter, req *http.Request) {
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
responseWriter.Header().Add("Content-Type", "text/html")
if req.Method == "POST" {
firstName := req.FormValue("firstName")
email := req.FormValue("email")
password := req.FormValue("password")
err := models.InsertMember(firstName, email, password)
if err == nil {
member, _ := models.GetMember(email, password)
member, errr := models.GetMember(email, password)
if errr == nil {
session, err := models.CreateSession(member)
if err == nil {
var cookie http.Cookie
cookie.Name = "goSessionId"
cookie.Expires = time.Now().Add(10 * time.Minute)
cookie.Value = strconv.Itoa(session.MemberId())
responseWriter.Header().Add("Set-Cookie", cookie.String())
var cookie2 http.Cookie
cookie2.Name = "loggedName"
cookie2.Expires = time.Now().Add(10 * time.Minute)
cookie2.Value = member.FirstName()
responseWriter.Header().Add("Set-Cookie", cookie2.String())
}
http.Redirect(w, req, "/home", http.StatusFound)
}
}
}
vm := viewmodels.GetSignup()
this.signupTemplate.Execute(responseWriter, vm)
}
作者:brewinva
项目:mvc-webap
func (this *homeController) get(w http.ResponseWriter, req *http.Request) {
vm := viewmodels.GetHome()
/*
*sessionCookie, err := req.Cookie("sessionId")
*if err == nil {
* member, err := models.GetMemberBySessionId(sessionCookie.Value)
* if err == nil {
* vm.Member.IsLoggedIn = true
* vm.Member.FirstName = member.FirstName()
* }
*}
*/
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
}
作者:Ikanan
项目:GolangWebAp
func (this *productController) get(w http.ResponseWriter, req *http.Request) {
ck, er := req.Cookie("goSessionId")
if er == nil {
vars := mux.Vars(req)
idRaw := vars["id"]
id, err := strconv.Atoi(idRaw)
if req.Method == "POST" {
userId, _ := strconv.Atoi(ck.Value)
productId := id
models.InsertOrder(userId, productId)
http.Redirect(w, req, "/categories", http.StatusFound)
} else {
if err == nil {
vm := viewmodels.GetProductVM()
vm.LoggedIn = true
modelProduct, _ := models.GetProduct(id)
vm.Product = converter.ConvertProductsToViewModel(modelProduct)
w.Header().Add("Content-Type", "text/html")
responseWriter := util.GetResponseWriter(w, req)
defer responseWriter.Close()
this.template.Execute(responseWriter, vm)
} else {
w.WriteHeader(404)
}
}
} else {
http.Redirect(w, req, "/home", http.StatusFound)
}
}
作者:Ikanan
项目:GolangWebAp
func (this *profileController) get(w http.ResponseWriter, req *http.Request) {
vm := viewmodels.GetProfile()
responseWriter := util.GetResponseWriter(w, req)
ck, err := req.Cookie("goSessionId")
if err == nil {
vm.LoggedIn = true
userId, _ := strconv.Atoi(ck.Value)
modelMember, _ := models.GetMemberById(userId)
vm.Member = converter.ConvertMemberlToViewModel(modelMember)
if req.Method == "GET" {
var listOfProductIds []int
listOfProductIds, _ = models.GetMembersOrder(userId)
var listOfProducts []viewmodels.Product
for _, val := range listOfProductIds {
pr, _ := models.GetProduct(val)
listOfProducts = append(listOfProducts, converter.ConvertProductsToViewModel(pr))
}
vm.Products = listOfProducts
vm.LoggedIn = true
} else {
remButton := req.FormValue("remove")
remId, _ := strconv.Atoi(remButton)
if remButton == "" {
productName := req.FormValue("name")
productType := req.FormValue("type")
productDescription := req.FormValue("description")
productPrice := req.FormValue("price")
productImgUrl := req.FormValue("imageurl")
_, fileErr := models.GetProductByName(productName)
if fileErr != nil {
inputProduct := models.Product{}
inputProduct.SetName(productName)
inputProduct.SetDescription(productDescription)
inputProduct.SetImageUrl(productImgUrl)
typ, _ := strconv.Atoi(productType)
inputProduct.SetTyp(typ)
price64, _ := strconv.ParseFloat(productPrice, 2)
price := float32(price64)
inputProduct.SetPrice(price)
insertErr := models.InsertProduct(inputProduct)
if insertErr == nil {
http.Redirect(w, req, "/profile", http.StatusFound)
} else {
log.Fatal(insertErr.Error())
}
} else {
http.Redirect(w, req, "/home", http.StatusFound)
}
} else {
deleteErr := models.RemoveOrder(userId, remId)
if deleteErr == nil {
http.Redirect(w, req, "/profile", http.StatusFound)
}
}
}
} else {
http.Redirect(w, req, "/login", http.StatusFound)
}
w.Header().Add("Content-Type", "text/html")
this.template.Execute(responseWriter, vm)
defer responseWriter.Close()
}