aboutsummaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
Diffstat (limited to 'api')
-rw-r--r--api/api.go57
-rw-r--r--api/ip.go37
-rw-r--r--api/routes.go58
3 files changed, 0 insertions, 152 deletions
diff --git a/api/api.go b/api/api.go
deleted file mode 100644
index c197774..0000000
--- a/api/api.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package api
-
-import (
- "net/http"
- "os"
- "os/signal"
- "strconv"
- "syscall"
- "time"
-
- mux "github.com/gorilla/mux"
- log "github.com/sirupsen/logrus"
-)
-
-func cleanup() {
- log.Print("Shutting down server...")
-}
-
-// Define router and start server
-func Serve(port int) {
- // Sigint trapper
- c := make(chan os.Signal)
- signal.Notify(c, os.Interrupt, syscall.SIGTERM)
- go func() {
- <-c
- cleanup()
- os.Exit(0)
- }()
-
- // Define Mux Router
- r := mux.NewRouter()
- r.HandleFunc("/health", healthCheckFunc)
- r.HandleFunc("/api", insertFunc).Methods("POST")
- r.HandleFunc("/api/{hash}", getHashFunc).Methods("GET")
-
- http.Handle("/", r)
-
- // Start HTTP server
- server := newServer(":"+strconv.Itoa(port), r)
- log.Printf("Starting server on %d", port)
-
- defer cleanup()
- err := server.ListenAndServe()
- if err != nil {
- log.Fatal(err)
- }
-}
-
-// Function to create new HTTP server
-func newServer(addr string, router http.Handler) *http.Server {
- return &http.Server{
- Addr: addr,
- Handler: router,
- ReadTimeout: time.Second * 30,
- WriteTimeout: time.Second * 30,
- }
-}
diff --git a/api/ip.go b/api/ip.go
deleted file mode 100644
index 0d135b3..0000000
--- a/api/ip.go
+++ /dev/null
@@ -1,37 +0,0 @@
-package api
-
-import (
- "net"
- "net/http"
- "strings"
-)
-
-func getIP(r *http.Request) (s string) {
- // Get IP from the X-REAL-IP header
- ip := r.Header.Get("X-REAL-IP")
- netIP := net.ParseIP(ip)
- if netIP != nil {
- return ip
- }
-
- // Get IP from X-FORWARDED-FOR header
- ips := r.Header.Get("X-FORWARDED-FOR")
- splitIps := strings.Split(ips, ",")
- for _, ip := range splitIps {
- netIP := net.ParseIP(ip)
- if netIP != nil {
- return ip
- }
- }
-
- // Get IP from RemoteAddr
- ip, _, err := net.SplitHostPort(r.RemoteAddr)
- if err != nil {
- return
- }
- netIP = net.ParseIP(ip)
- if netIP != nil {
- return
- }
- return
-}
diff --git a/api/routes.go b/api/routes.go
deleted file mode 100644
index 760ee35..0000000
--- a/api/routes.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package api
-
-import (
- "encoding/json"
- "fmt"
- "net/http"
- "time"
-
- "github.com/gorilla/mux"
- "github.com/jackyzha0/ctrl-v/cache"
- "github.com/jackyzha0/ctrl-v/db"
-
- log "github.com/sirupsen/logrus"
-)
-
-func healthCheckFunc(w http.ResponseWriter, r *http.Request) {
- fmt.Fprint(w, "status ok")
-}
-
-func insertFunc(w http.ResponseWriter, r *http.Request) {
- // get content
- _ = r.ParseMultipartForm(0)
- expiry := r.FormValue("expiry")
- content := r.FormValue("content")
-
- // get ip
- ip := getIP(r)
-
- log.Infof("got content '%s' and ip '%s'", content, ip)
-
- // insert content
- err := db.New(ip, content, expiry)
- if err != nil {
- fmt.Fprintf(w, "got err: %s", err.Error())
- }
-}
-
-func getHashFunc(w http.ResponseWriter, r *http.Request) {
- hash := mux.Vars(r)["hash"]
- paste, err := cache.C.Get(hash)
-
- // if hash was not found
- if err != nil {
- w.WriteHeader(http.StatusNotFound)
- fmt.Fprintf(w, "got err: %s", err.Error())
- return
- }
-
- // otherwise, return paste content and current time
- w.Header().Set("Content-Type", "application/json")
- pasteMap := map[string]interface{}{
- "timestamp": time.Now(),
- "content": paste.Content,
- }
-
- jsonData, _ := json.Marshal(pasteMap)
- fmt.Fprintf(w, "%+v", string(jsonData))
-}