Skip to content

Commit

Permalink
chore: prefix API calls with /api/ (#66)
Browse files Browse the repository at this point in the history
chore: prefix API calls with /api/
  • Loading branch information
moul committed May 22, 2019
2 parents 4b39528 + aa7ca76 commit 8c55ca7
Show file tree
Hide file tree
Showing 10 changed files with 135 additions and 86 deletions.
22 changes: 22 additions & 0 deletions contrib/firebase/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<html>
<head>
</head>
<body>
<script src="https://www.gstatic.com/firebasejs/6.0.2/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/6.0.2/firebase-auth.js"></script>
<script>
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "AIzaSyBzLrepNGhispjYaJqX3xWIO9KZpZdvZCk",
authDomain: "pathwar-pwn.firebaseapp.com",
databaseURL: "https://pathwar-pwn.firebaseio.com",
projectId: "pathwar-pwn",
storageBucket: "pathwar-pwn.appspot.com",
messagingSenderId: "1009405509165",
appId: "1:1009405509165:web:89aaba3d48ccec7f"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
</script>
</body>
</html>
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ require (
github.com/docker/go-connections v0.4.0
github.com/docker/go-units v0.3.3 // indirect
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 // indirect
github.com/go-chi/chi v4.0.2+incompatible
github.com/go-sql-driver/mysql v1.4.1
github.com/gobuffalo/packr/v2 v2.0.0-rc.15
github.com/gogo/gateway v1.0.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/go-chi/chi v4.0.2+incompatible h1:maB6vn6FqCxrpz4FqWdh4+lwpyZIQS7YEAUcHlgXVRs=
github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ=
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
Expand Down
2 changes: 2 additions & 0 deletions server/cmd_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ type serverOptions struct {
HTTPBind string
JWTKey string
WithReflection bool
WebDir string
}

func (opts serverOptions) String() string {
Expand All @@ -38,6 +39,7 @@ func (cmd *serverCommand) LoadDefaultOptions() error { return viper.Unmarshal(&c
func (cmd *serverCommand) ParseFlags(flags *pflag.FlagSet) {
flags.StringVar(&cmd.opts.GRPCBind, "grpc-bind", ":9111", "gRPC server address")
flags.StringVar(&cmd.opts.HTTPBind, "http-bind", ":8000", "HTTP server address")
flags.StringVar(&cmd.opts.WebDir, "web-dir", "", "Static Files Directory")
flags.StringVar(&cmd.opts.JWTKey, "jwt-key", "", "JWT secure key")
flags.BoolVarP(&cmd.opts.WithReflection, "grpc-reflection", "", false, "enable gRPC reflection")
if err := viper.BindPFlags(flags); err != nil {
Expand Down
27 changes: 24 additions & 3 deletions server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ import (
"crypto/rand"
"net"
"net/http"
"time"

"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/gogo/gateway"
"github.com/gogo/protobuf/gogoproto"
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
Expand Down Expand Up @@ -35,6 +38,7 @@ func server(opts *serverOptions) error {
}

func startHTTPServer(ctx context.Context, opts *serverOptions) error {
// configure gateway mux
gwmux := runtime.NewServeMux(
runtime.WithMarshalerOption(runtime.MIMEWildcard, &gateway.JSONPb{
EmitDefaults: false,
Expand All @@ -47,10 +51,27 @@ func startHTTPServer(ctx context.Context, opts *serverOptions) error {
if err := RegisterServerHandlerFromEndpoint(ctx, gwmux, opts.GRPCBind, grpcOpts); err != nil {
return err
}

// configure chi router
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(middleware.Recoverer)
r.Use(middleware.Timeout(5 * time.Second))
r.Use(middleware.RealIP)
r.Use(middleware.RequestID)
// gateway mux
r.Mount("/api", gwmux)
// static files
if opts.WebDir != "" {
fs := http.StripPrefix("/", http.FileServer(http.Dir(opts.WebDir)))
r.Get("/*", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fs.ServeHTTP(w, r)
}))
}

// start HTTP server
zap.L().Info("starting HTTP server", zap.String("bind", opts.HTTPBind))
mux := http.NewServeMux()
mux.Handle("/", gwmux)
return http.ListenAndServe(opts.HTTPBind, mux)
return http.ListenAndServe(opts.HTTPBind, r)
}

func startGRPCServer(ctx context.Context, opts *serverOptions) error {
Expand Down
105 changes: 53 additions & 52 deletions server/server.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 9 additions & 9 deletions server/server.pb.gw.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 9 additions & 9 deletions server/server.proto
Original file line number Diff line number Diff line change
Expand Up @@ -93,42 +93,42 @@ service Server {
// Create a session based on credentials
rpc Authenticate(AuthenticateInput) returns (AuthenticateOutput) {
option (google.api.http) = {
post: "/authenticate"
post: "/api/authenticate"
body: "*"
};
};

// Verify the service is up and running
rpc Ping(Void) returns (Void) {
option (google.api.http) = {get: "/ping"};
option (google.api.http) = {get: "/api/ping"};
};

// Get current user's session
rpc UserSession(Void) returns (pathwar.entity.UserSession) {
option (google.api.http) = {get: "/user-session"};
option (google.api.http) = {get: "/api/user-session"};
};

// List tournaments
rpc Tournaments(Void) returns (pathwar.entity.TournamentList) {
option (google.api.http) = {get: "/tournaments"};
option (google.api.http) = {get: "/api/tournaments"};
// FIXME: pagination & filters
};

// List users
rpc Users(Void) returns (pathwar.entity.UserList) {
option (google.api.http) = {get: "/users"};
option (google.api.http) = {get: "/api/users"};
// FIXME: pagination & filters
};

// List levels
rpc Levels(Void) returns (pathwar.entity.LevelList) {
option (google.api.http) = {get: "/levels"};
option (google.api.http) = {get: "/api/levels"};
// FIXME: pagination & filters
};

// List teams
rpc Teams(Void) returns (pathwar.entity.TeamList) {
option (google.api.http) = {get: "/teams"};
option (google.api.http) = {get: "/api/teams"};
// FIXME: pagination & filters
};

Expand All @@ -137,11 +137,11 @@ service Server {
//

rpc GenerateFakeData(Void) returns (Void) {
option (google.api.http) = {post: "/dev/generate-fake-data"};
option (google.api.http) = {post: "/api/dev/generate-fake-data"};
};

rpc Dump(Void) returns (pathwar.entity.Dump) {
option (google.api.http) = {post: "/dev/sql-dump"};
option (google.api.http) = {post: "/api/dev/sql-dump"};
};
}

Expand Down
Loading

0 comments on commit 8c55ca7

Please sign in to comment.