Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "html/template"
- "net/http"
- "os"
- )
- type Email struct {
- Value string
- }
- func (e *Email) save() error {
- filename := "email-list.txt"
- f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600)
- if err != nil {
- return err
- }
- defer f.Close()
- if _, err = f.WriteString(e.Value); err != nil {
- return err
- }
- return nil
- }
- func handler(w http.ResponseWriter, r *http.Request) {
- renderTemplate(w, "landing", nil)
- }
- func signupHandler(w http.ResponseWriter, r *http.Request) {
- r.ParseForm()
- email := r.Form.Get("email")
- log(email)
- if email == "" {
- log("Email is empty.")
- }
- e := &Email{Value: email}
- err := e.save()
- // if err == nil {
- // log(err.Error())
- // http.Redirect(w, r, "/error", http.StatusFound)
- // return
- // }
- if err != nil {
- http.Redirect(w, r, "/success", http.StatusFound)
- } else {
- log(err.Error())
- }
- }
- func log(message string) {
- fmt.Printf(message)
- }
- func successHandler(w http.ResponseWriter, r *http.Request) {
- renderTemplate(w, "success", nil)
- }
- func errorHandler(w http.ResponseWriter, r *http.Request) {
- renderTemplate(w, "error", nil)
- }
- func main() {
- http.HandleFunc("/", handler)
- http.HandleFunc("/signup", signupHandler)
- http.HandleFunc("/success", successHandler)
- http.HandleFunc("/error", errorHandler)
- http.ListenAndServe(":8080", nil)
- }
- func renderTemplate(w http.ResponseWriter, tmpl string, e *Email) {
- t, _ := template.ParseFiles(tmpl + ".html")
- if e != nil {
- t.Execute(w, e)
- } else {
- t.Execute(w, &Email{Value: "test"})
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement