From 699a1a5076d683d0e59b2edbe9e05b6886c0bc88 Mon Sep 17 00:00:00 2001 From: Steve Manuel Date: Wed, 26 Oct 2016 12:30:48 -0700 Subject: debugging and code reorg --- system/api/external.go | 46 ++++++++++++++++++++++++++++++++++++++++ system/api/server.go | 2 ++ system/external/server.go | 53 ----------------------------------------------- 3 files changed, 48 insertions(+), 53 deletions(-) create mode 100644 system/api/external.go delete mode 100644 system/external/server.go (limited to 'system') diff --git a/system/api/external.go b/system/api/external.go new file mode 100644 index 0000000..19dc1d0 --- /dev/null +++ b/system/api/external.go @@ -0,0 +1,46 @@ +package api + +import ( + "log" + "net/http" + + "github.com/bosssauce/ponzu/content" + "github.com/bosssauce/ponzu/system/db" +) + +// Externalable accepts or rejects external POST requests to /external/posts?type=Review +type Externalable interface { + Accept() bool +} + +func externalPostsHandler(res http.ResponseWriter, req *http.Request) { + if req.Method != http.MethodPost { + res.WriteHeader(http.StatusMethodNotAllowed) + return + } + + t := req.URL.Query().Get("type") + if t == "" { + res.WriteHeader(http.StatusBadRequest) + return + } + + p, found := content.Types[t] + if !found { + log.Println("Attempt to submit content", t, "by", req.RemoteAddr) + res.WriteHeader(http.StatusNotFound) + return + } + + post := p() + + ext, ok := post.(Externalable) + if !ok { + res.WriteHeader(http.StatusInternalServerError) + return + } + + if ext.Accept() { + db.SetContent(t+"_external"+":-1", req.Form) + } +} diff --git a/system/api/server.go b/system/api/server.go index da73382..816bc21 100644 --- a/system/api/server.go +++ b/system/api/server.go @@ -9,4 +9,6 @@ func Run() { http.HandleFunc("/api/posts", CORS(postsHandler)) http.HandleFunc("/api/post", CORS(postHandler)) + + http.HandleFunc("/api/external/posts", CORS(externalPostsHandler)) } diff --git a/system/external/server.go b/system/external/server.go deleted file mode 100644 index 8f40ad1..0000000 --- a/system/external/server.go +++ /dev/null @@ -1,53 +0,0 @@ -package external - -import ( - "fmt" - "net/http" - - "github.com/bosssauce/ponzu/content" - "github.com/bosssauce/ponzu/system/api" - "github.com/bosssauce/ponzu/system/db" -) - -// Externalable accepts or rejects external POST requests to /external/posts?type=Review -type Externalable interface { - Accept() bool -} - -func init() { - http.HandleFunc("/api/external/posts", api.CORS(externalPostsHandler)) -} - -func externalPostsHandler(res http.ResponseWriter, req *http.Request) { - fmt.Println("got request") - res.Header().Set("X-TEST", "Request ack") - if req.Method != http.MethodPost { - res.WriteHeader(http.StatusMethodNotAllowed) - return - } - - t := req.URL.Query().Get("type") - if t == "" { - res.WriteHeader(http.StatusBadRequest) - return - } - - p, found := content.Types[t] - if !found { - fmt.Println(t, content.Types, p) - res.WriteHeader(http.StatusNotFound) - return - } - - post := p() - - ext, ok := post.(Externalable) - if !ok { - res.WriteHeader(http.StatusInternalServerError) - return - } - - if ext.Accept() { - db.SetContent(t+"_external"+":-1", req.Form) - } -} -- cgit v1.2.3