aboutsummaryrefslogtreecommitdiff
path: root/db/redis.go
diff options
context:
space:
mode:
Diffstat (limited to 'db/redis.go')
-rw-r--r--db/redis.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/db/redis.go b/db/redis.go
new file mode 100644
index 0000000..873ca27
--- /dev/null
+++ b/db/redis.go
@@ -0,0 +1,68 @@
+package db
+
+import (
+ "bufio"
+ "fmt"
+ "net/http"
+ "os"
+
+ "github.com/FChannel0/FChannel-Server/config"
+ "github.com/gomodule/redigo/redis"
+)
+
+var Cache redis.Conn
+
+func InitCache() error {
+ conn, err := redis.DialURL(config.Redis)
+ Cache = conn
+ return err
+}
+
+func CloseCache() error {
+ return Cache.Close()
+}
+
+func CheckSession(w http.ResponseWriter, r *http.Request) (interface{}, error) {
+ c, err := r.Cookie("session_token")
+
+ if err != nil {
+ if err == http.ErrNoCookie {
+ w.WriteHeader(http.StatusUnauthorized)
+ return nil, err
+ }
+
+ w.WriteHeader(http.StatusBadRequest)
+ return nil, err
+ }
+
+ sessionToken := c.Value
+
+ response, err := Cache.Do("GET", sessionToken)
+
+ if err != nil {
+ w.WriteHeader(http.StatusInternalServerError)
+ return nil, err
+ }
+ if response == nil {
+ w.WriteHeader(http.StatusUnauthorized)
+ return nil, err
+ }
+
+ return response, nil
+}
+
+func GetClientKey() (string, error) {
+ file, err := os.Open("clientkey")
+ if err != nil {
+ return "", err
+ }
+ defer file.Close()
+
+ scanner := bufio.NewScanner(file)
+ var line string
+ for scanner.Scan() {
+ line = fmt.Sprintf("%s", scanner.Text())
+ }
+
+ return line, nil
+}