Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.20 KB | None | 0 0
  1. package main
  2. import (
  3.     "encoding/json"
  4.     "github.com/gorilla/mux"
  5.     "log"
  6.     "net/http"
  7. )
  8.  
  9. type Reply struct {
  10.     Summary string
  11. }
  12.  
  13. var replies map [ string ] Reply
  14.  
  15. func Create( w http.ResponseWriter, r *http.Request ) {
  16.     vars := mux.Vars( r )
  17.     user := vars[ "user" ]
  18.     decoder := json.NewDecoder( r.Body )
  19.     var reply Reply
  20.     if err := decoder.Decode( &reply ) ; err == nil {
  21.         w.WriteHeader( http.StatusCreated )
  22.         replies[ user ] = reply
  23.     }else{
  24.     w.WriteHeader( http.StatusBadRequest )
  25.     }
  26. }
  27.  
  28. func handleRequests() {
  29.     router := mux.NewRouter().StrictSlash( true )
  30.     router.HandleFunc( "/outoffice/{user}", Create ).Methods( "POST" )
  31.     router.HandleFunc( "/outoffice/{user}", Read ).Methods( "GET" )
  32.     log.Fatal( http.ListenAndServe( ":8888", router) )
  33.    
  34. }
  35.  
  36. func main(){
  37.     replies = make( map [string ] Reply)
  38.     handleRequests()
  39.     }
  40.    
  41.  
  42. func Read ( w http.ResponseWriter, r *http.Request ) {
  43.     vars := mux.Vars(r)
  44.     user := vars[ "user" ]
  45.     if reply, ok := replies[user]; ok {
  46.         w.WriteHeader(http.StatusOK)
  47.         if enc, err := json.Marshal(reply);err == nil{
  48.             w.Write( []byte(enc))
  49.         }else{
  50.         w.WriteHeader(http.StatusInternalServerError)
  51.         }
  52.     }else{
  53.     w.WriteHeader(http.StatusNotFound)
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement