commit 8e9cbe797cb44e474b96f0e4756ec34e990de4d8 Author: DROGOU Laurent Date: Wed Jan 13 23:39:00 2021 +0100 :tada: initial commit diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..072f3d3 --- /dev/null +++ b/go.mod @@ -0,0 +1,9 @@ +module github.com/ldrogou/goauth20 + +go 1.15 + +require ( + github.com/gorilla/mux v1.8.0 + github.com/jmoiron/sqlx v1.2.0 + github.com/mattn/go-sqlite3 v1.14.6 +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..6532dee --- /dev/null +++ b/go.sum @@ -0,0 +1,9 @@ +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA= +github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= diff --git a/goauth20 b/goauth20 new file mode 100755 index 0000000..5f53b9f Binary files /dev/null and b/goauth20 differ diff --git a/main.go b/main.go new file mode 100644 index 0000000..40ed76d --- /dev/null +++ b/main.go @@ -0,0 +1,38 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "os" +) + +func main() { + fmt.Println("OAuth RCA") + + if err := run(); err != nil { + fmt.Fprintf(os.Stderr, "%s)\n", err) + os.Exit(1) + } +} + +func run() error { + srv := newServer() + srv.store = &dbStore{} + err := srv.store.Open() + if err != nil { + return err + } + defer srv.store.Close() + + http.HandleFunc("/", srv.serveHTTP) + + port := 8080 + log.Printf("servering http port %v", port) + err = http.ListenAndServe(":8080", nil) + if err != nil { + return err + } + + return nil +} diff --git a/middleware.go b/middleware.go new file mode 100644 index 0000000..eda0064 --- /dev/null +++ b/middleware.go @@ -0,0 +1,14 @@ +package main + +import ( + "log" + "net/http" +) + +func logRequestMiddleware(next http.HandlerFunc) http.HandlerFunc { + + return func(rw http.ResponseWriter, r *http.Request) { + log.Printf("[%v] %v", r.Method, r.RequestURI) + next.ServeHTTP(rw, r) + } +} diff --git a/routes.auth.go b/routes.auth.go new file mode 100644 index 0000000..6affdde --- /dev/null +++ b/routes.auth.go @@ -0,0 +1,19 @@ +package main + +import ( + "fmt" + "net/http" +) + +func (s *server) handleIndex() http.HandlerFunc { + return func(rw http.ResponseWriter, r *http.Request) { + fmt.Fprintf(rw, "Welcome to Goflix") + } + +} + +func (s *server) handleRedirect() http.HandlerFunc { + return func(rw http.ResponseWriter, r *http.Request) { + + } +} diff --git a/routes.go b/routes.go new file mode 100644 index 0000000..37fc73b --- /dev/null +++ b/routes.go @@ -0,0 +1,6 @@ +package main + +func (s *server) routes() { + s.router.HandleFunc("/", s.handleIndex()).Methods("GET") + s.router.HandleFunc("/oauth/redirect", s.handleRedirect()).Methods("GET") +} diff --git a/server.go b/server.go new file mode 100644 index 0000000..7d2ef9e --- /dev/null +++ b/server.go @@ -0,0 +1,23 @@ +package main + +import ( + "net/http" + + "github.com/gorilla/mux" +) + +type server struct { + router *mux.Router + store Store +} + +func newServer() *server { + s := &server{ + router: mux.NewRouter(), + } + return s +} + +func (s *server) serveHTTP(rw http.ResponseWriter, r *http.Request) { + logRequestMiddleware(s.router.ServeHTTP).ServeHTTP(rw, r) +} diff --git a/store.go b/store.go new file mode 100644 index 0000000..419308b --- /dev/null +++ b/store.go @@ -0,0 +1,43 @@ +package main + +import ( + "log" + + "github.com/jmoiron/sqlx" + _ "github.com/mattn/go-sqlite3" +) + +type Store interface { + Open() error + Close() error +} + +type dbStore struct { + db *sqlx.DB +} + +var schema = ` +CREATE TABLE IF NOT EXISTS auth +( + id INTEGER PRIMARY KEY AUTOINCREMENT, + access_token TEXT, + expire_in TEXT, + refreh_token TEXT +) +` + +func (store *dbStore) Open() error { + db, err := sqlx.Connect("sqlite3", "auth.go") + if err != nil { + return err + } + log.Println("Connected db") + db.MustExec(schema) + + store.db = db + return nil +} + +func (store *dbStore) Close() error { + return store.db.Close() +}