🎉 initial commit
This commit is contained in:
9
go.mod
Normal file
9
go.mod
Normal file
@@ -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
|
||||
)
|
||||
9
go.sum
Normal file
9
go.sum
Normal file
@@ -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=
|
||||
38
main.go
Normal file
38
main.go
Normal file
@@ -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
|
||||
}
|
||||
14
middleware.go
Normal file
14
middleware.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
19
routes.auth.go
Normal file
19
routes.auth.go
Normal file
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
6
routes.go
Normal file
6
routes.go
Normal file
@@ -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")
|
||||
}
|
||||
23
server.go
Normal file
23
server.go
Normal file
@@ -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)
|
||||
}
|
||||
43
store.go
Normal file
43
store.go
Normal file
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user