add api prefix option

This commit is contained in:
Patrick Nagurny
2018-11-08 11:35:11 -05:00
parent 2a827bac26
commit edffa4b7c6
6 changed files with 44 additions and 42 deletions

View File

@@ -3,5 +3,5 @@
"version": "1.0.0", "version": "1.0.0",
"description": "Open Accounting API documentation", "description": "Open Accounting API documentation",
"title": "Open Accounting API documentation", "title": "Open Accounting API documentation",
"url" : "https://openaccounting.io/api" "url" : "https://api.openaccounting.io"
} }

View File

@@ -1,6 +1,7 @@
{ {
"WebUrl": "https://domain.com", "WebUrl": "https://domain.com",
"Port": 8080, "Port": 8080,
"ApiPrefix": "/api",
"KeyFile": "", "KeyFile": "",
"CertFile": "", "CertFile": "",
"Database": "openaccounting", "Database": "openaccounting",

View File

@@ -34,7 +34,7 @@ import (
* *
*/ */
func Init() (*rest.Api, error) { func Init(prefix string) (*rest.Api, error) {
rest.ErrorFieldName = "error" rest.ErrorFieldName = "error"
app := rest.NewApi() app := rest.NewApi()
@@ -74,7 +74,7 @@ func Init() (*rest.Api, error) {
app.Use(auth) app.Use(auth)
app.Use(version) app.Use(version)
router, err := GetRouter(auth) router, err := GetRouter(auth, prefix)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -5,44 +5,44 @@ import (
"github.com/openaccounting/oa-server/core/ws" "github.com/openaccounting/oa-server/core/ws"
) )
func GetRouter(auth *AuthMiddleware) (rest.App, error) { func GetRouter(auth *AuthMiddleware, prefix string) (rest.App, error) {
return rest.MakeRouter( return rest.MakeRouter(
rest.Get("/api/user", auth.RequireAuth(GetUser)), rest.Get(prefix + "/user", auth.RequireAuth(GetUser)),
rest.Put("/api/user", PutUser), rest.Put(prefix + "/user", PutUser),
rest.Post("/api/user/verify", VerifyUser), rest.Post(prefix + "/user/verify", VerifyUser),
rest.Post("/api/user/reset-password", ResetPassword), rest.Post(prefix + "/user/reset-password", ResetPassword),
rest.Post("/api/users", PostUser), rest.Post(prefix + "/users", PostUser),
rest.Post("/api/orgs", auth.RequireAuth(PostOrg)), rest.Post(prefix + "/orgs", auth.RequireAuth(PostOrg)),
rest.Get("/api/orgs", auth.RequireAuth(GetOrgs)), rest.Get(prefix + "/orgs", auth.RequireAuth(GetOrgs)),
rest.Get("/api/orgs/:orgId", auth.RequireAuth(GetOrg)), rest.Get(prefix + "/orgs/:orgId", auth.RequireAuth(GetOrg)),
rest.Put("/api/orgs/:orgId", auth.RequireAuth(PutOrg)), rest.Put(prefix + "/orgs/:orgId", auth.RequireAuth(PutOrg)),
rest.Get("/api/orgs/:orgId/ledgers", auth.RequireAuth(GetOrgAccounts)), rest.Get(prefix + "/orgs/:orgId/ledgers", auth.RequireAuth(GetOrgAccounts)),
rest.Post("/api/orgs/:orgId/ledgers", auth.RequireAuth(PostAccount)), rest.Post(prefix + "/orgs/:orgId/ledgers", auth.RequireAuth(PostAccount)),
rest.Put("/api/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(PutAccount)), rest.Put(prefix + "/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(PutAccount)),
rest.Delete("/api/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(DeleteAccount)), rest.Delete(prefix + "/orgs/:orgId/ledgers/:accountId", auth.RequireAuth(DeleteAccount)),
rest.Get("/api/orgs/:orgId/ledgers/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)), rest.Get(prefix + "/orgs/:orgId/ledgers/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)),
rest.Get("/api/orgs/:orgId/accounts", auth.RequireAuth(GetOrgAccounts)), rest.Get(prefix + "/orgs/:orgId/accounts", auth.RequireAuth(GetOrgAccounts)),
rest.Post("/api/orgs/:orgId/accounts", auth.RequireAuth(PostAccount)), rest.Post(prefix + "/orgs/:orgId/accounts", auth.RequireAuth(PostAccount)),
rest.Put("/api/orgs/:orgId/accounts/:accountId", auth.RequireAuth(PutAccount)), rest.Put(prefix + "/orgs/:orgId/accounts/:accountId", auth.RequireAuth(PutAccount)),
rest.Delete("/api/orgs/:orgId/accounts/:accountId", auth.RequireAuth(DeleteAccount)), rest.Delete(prefix + "/orgs/:orgId/accounts/:accountId", auth.RequireAuth(DeleteAccount)),
rest.Get("/api/orgs/:orgId/accounts/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)), rest.Get(prefix + "/orgs/:orgId/accounts/:accountId/transactions", auth.RequireAuth(GetTransactionsByAccount)),
rest.Get("/api/orgs/:orgId/transactions", auth.RequireAuth(GetTransactionsByOrg)), rest.Get(prefix + "/orgs/:orgId/transactions", auth.RequireAuth(GetTransactionsByOrg)),
rest.Post("/api/orgs/:orgId/transactions", auth.RequireAuth(PostTransaction)), rest.Post(prefix + "/orgs/:orgId/transactions", auth.RequireAuth(PostTransaction)),
rest.Put("/api/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(PutTransaction)), rest.Put(prefix + "/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(PutTransaction)),
rest.Delete("/api/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(DeleteTransaction)), rest.Delete(prefix + "/orgs/:orgId/transactions/:transactionId", auth.RequireAuth(DeleteTransaction)),
rest.Get("/api/orgs/:orgId/prices", auth.RequireAuth(GetPrices)), rest.Get(prefix + "/orgs/:orgId/prices", auth.RequireAuth(GetPrices)),
rest.Post("/api/orgs/:orgId/prices", auth.RequireAuth(PostPrice)), rest.Post(prefix + "/orgs/:orgId/prices", auth.RequireAuth(PostPrice)),
rest.Delete("/api/orgs/:orgId/prices/:priceId", auth.RequireAuth(DeletePrice)), rest.Delete(prefix + "/orgs/:orgId/prices/:priceId", auth.RequireAuth(DeletePrice)),
rest.Get("/ws", ws.Handler), rest.Get(prefix + "/ws", ws.Handler),
rest.Post("/api/sessions", auth.RequireAuth(PostSession)), rest.Post(prefix + "/sessions", auth.RequireAuth(PostSession)),
rest.Delete("/api/sessions/:sessionId", auth.RequireAuth(DeleteSession)), rest.Delete(prefix + "/sessions/:sessionId", auth.RequireAuth(DeleteSession)),
rest.Get("/api/apikeys", auth.RequireAuth(GetApiKeys)), rest.Get(prefix + "keys", auth.RequireAuth(GetApiKeys)),
rest.Post("/api/apikeys", auth.RequireAuth(PostApiKey)), rest.Post(prefix + "keys", auth.RequireAuth(PostApiKey)),
rest.Put("/api/apikeys/:apiKeyId", auth.RequireAuth(PutApiKey)), rest.Put(prefix + "keys/:apiKeyId", auth.RequireAuth(PutApiKey)),
rest.Delete("/api/apikeys/:apiKeyId", auth.RequireAuth(DeleteApiKey)), rest.Delete(prefix + "keys/:apiKeyId", auth.RequireAuth(DeleteApiKey)),
rest.Get("/api/orgs/:orgId/invites", auth.RequireAuth(GetInvites)), rest.Get(prefix + "/orgs/:orgId/invites", auth.RequireAuth(GetInvites)),
rest.Post("/api/orgs/:orgId/invites", auth.RequireAuth(PostInvite)), rest.Post(prefix + "/orgs/:orgId/invites", auth.RequireAuth(PostInvite)),
rest.Put("/api/orgs/:orgId/invites/:inviteId", auth.RequireAuth(PutInvite)), rest.Put(prefix + "/orgs/:orgId/invites/:inviteId", auth.RequireAuth(PutInvite)),
rest.Delete("/api/orgs/:orgId/invites/:inviteId", auth.RequireAuth(DeleteInvite)), rest.Delete(prefix + "/orgs/:orgId/invites/:inviteId", auth.RequireAuth(DeleteInvite)),
) )
} }

View File

@@ -3,6 +3,7 @@ package types
type Config struct { type Config struct {
WebUrl string WebUrl string
Port int Port int
ApiPrefix string
KeyFile string KeyFile string
CertFile string CertFile string
Database string Database string

View File

@@ -40,7 +40,7 @@ func main() {
model.NewModel(db, bc, config) model.NewModel(db, bc, config)
auth.NewAuthService(db, bc) auth.NewAuthService(db, bc)
app, err := api.Init() app, err := api.Init(config.ApiPrefix)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)