Skip to content

Commit

Permalink
refactor: remove logger package, add response wrapper and helper func…
Browse files Browse the repository at this point in the history
…tions
  • Loading branch information
sameh-farouk committed Nov 5, 2024
1 parent 74a09c0 commit 4800a72
Show file tree
Hide file tree
Showing 24 changed files with 949 additions and 486 deletions.
313 changes: 292 additions & 21 deletions api/docs/docs.go

Large diffs are not rendered by default.

313 changes: 292 additions & 21 deletions api/docs/swagger.json

Large diffs are not rendered by default.

212 changes: 191 additions & 21 deletions api/docs/swagger.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,106 @@
basePath: /
definitions:
responses.ErrorResponse:
config.Challenge:
properties:
error:
domain:
type: string
window:
type: integer
type: object
config.IDLimiter:
properties:
maxTokenRequests:
type: integer
tokenExpiration:
type: integer
type: object
config.IPLimiter:
properties:
maxTokenRequests:
type: integer
tokenExpiration:
type: integer
type: object
config.Idenfy:
properties:
apikey:
type: string
apisecret:
type: string
baseURL:
type: string
callbackSignKey:
type: string
callbackUrl:
type: string
devMode:
type: boolean
namespace:
type: string
whitelistedIPs:
items:
type: string
type: array
type: object
config.Log:
properties:
debug:
type: boolean
type: object
config.MongoDB:
properties:
databaseName:
type: string
uri:
type: string
type: object
config.Server:
properties:
port:
type: string
type: object
config.TFChain:
properties:
wsProviderURL:
type: string
type: object
config.Verification:
properties:
alwaysVerifiedIDs:
items:
type: string
type: array
expiredDocumentOutcome:
type: string
minBalanceToVerifyAccount:
type: integer
suspiciousVerificationOutcome:
type: string
type: object
responses.AppConfigsResponse:
properties:
challenge:
$ref: '#/definitions/config.Challenge'
idenfy:
$ref: '#/definitions/config.Idenfy'
idlimiter:
$ref: '#/definitions/config.IDLimiter'
iplimiter:
$ref: '#/definitions/config.IPLimiter'
log:
$ref: '#/definitions/config.Log'
mongoDB:
$ref: '#/definitions/config.MongoDB'
server:
$ref: '#/definitions/config.Server'
tfchain:
$ref: '#/definitions/config.TFChain'
verification:
$ref: '#/definitions/config.Verification'
type: object
responses.AppVersionResponse:
properties:
version:
type: string
type: object
responses.HealthResponse:
Expand Down Expand Up @@ -159,7 +257,11 @@ paths:
responses:
"200":
description: OK
schema: {}
schema:
properties:
result:
$ref: '#/definitions/responses.AppConfigsResponse'
type: object
summary: Get Service Configs
tags:
- Misc
Expand Down Expand Up @@ -194,23 +296,38 @@ paths:
"200":
description: OK
schema:
$ref: '#/definitions/responses.VerificationDataResponse'
properties:
result:
$ref: '#/definitions/responses.VerificationDataResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"401":
description: Unauthorized
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"404":
description: Not Found
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
summary: Get Verification Data
tags:
- Verification
Expand All @@ -221,7 +338,10 @@ paths:
"200":
description: OK
schema:
$ref: '#/definitions/responses.HealthResponse'
properties:
result:
$ref: '#/definitions/responses.HealthResponse'
type: object
summary: Health Check
tags:
- Health
Expand All @@ -248,19 +368,38 @@ paths:
"200":
description: OK
schema:
$ref: '#/definitions/responses.VerificationStatusResponse'
properties:
result:
$ref: '#/definitions/responses.VerificationStatusResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"404":
description: Not Found
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"503":
description: Service Unavailable
schema:
properties:
error:
type: string
type: object
summary: Get Verification Status
tags:
- Verification
Expand Down Expand Up @@ -295,31 +434,59 @@ paths:
"200":
description: Existing token retrieved
schema:
$ref: '#/definitions/responses.TokenResponse'
properties:
result:
$ref: '#/definitions/responses.TokenResponse'
type: object
"201":
description: New token created
schema:
$ref: '#/definitions/responses.TokenResponse'
properties:
result:
$ref: '#/definitions/responses.TokenResponse'
type: object
"400":
description: Bad Request
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"401":
description: Unauthorized
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"402":
description: Payment Required
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"409":
description: Conflict
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"500":
description: Internal Server Error
schema:
$ref: '#/definitions/responses.ErrorResponse'
properties:
error:
type: string
type: object
"503":
description: Service Unavailable
schema:
properties:
error:
type: string
type: object
summary: Get or Generate iDenfy Verification Token
tags:
- Token
Expand All @@ -330,7 +497,10 @@ paths:
"200":
description: OK
schema:
type: string
properties:
result:
$ref: '#/definitions/responses.AppVersionResponse'
type: object
summary: Get Service Version
tags:
- Misc
Expand Down
40 changes: 15 additions & 25 deletions cmd/api/main.go
Original file line number Diff line number Diff line change
@@ -1,47 +1,37 @@
package main

import (
"log"
"log/slog"
"os"

_ "github.com/threefoldtech/tf-kyc-verifier/api/docs"
"github.com/threefoldtech/tf-kyc-verifier/internal/config"
"github.com/threefoldtech/tf-kyc-verifier/internal/logger"
"github.com/threefoldtech/tf-kyc-verifier/internal/server"
)

func main() {
config, err := config.LoadConfigFromEnv()
if err != nil {
log.Fatal("Failed to load configuration:", err)
slog.Error("Failed to load configuration:", "error", err)
os.Exit(1)
}

err = logger.Init(config.Log)
if err != nil {
log.Fatal("Failed to initialize logger:", err)
logLevel := slog.LevelInfo
if config.Log.Debug {
logLevel = slog.LevelDebug
}
srvLogger, err := logger.GetLogger()
if err != nil {
log.Fatal("Failed to get logger:", err)
}

srvLogger.Debug("Configuration loaded successfully", logger.Fields{
"config": config.GetPublicConfig(),
})
logger := slog.New(slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{Level: logLevel}))
logger.Debug("Configuration loaded successfully", "config", config.GetPublicConfig())

server, err := server.New(config, srvLogger)
server, err := server.New(config, logger)
if err != nil {
srvLogger.Error("Failed to create server:", logger.Fields{
"error": err,
})
logger.Error("Failed to create server:", "error", err)
os.Exit(1)
}

srvLogger.Info("Starting server on port:", logger.Fields{
"port": config.Server.Port,
})
logger.Info("Starting server on port", "port", config.Server.Port)
err = server.Run()
if err != nil {
srvLogger.Fatal("Failed to start server", logger.Fields{
"error": err,
})
logger.Error("Server exited with error", "error", err)
os.Exit(1)
}
}
2 changes: 0 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ require (
github.com/valyala/fasthttp v1.51.0
github.com/vedhavyas/go-subkey/v2 v2.0.0
go.mongodb.org/mongo-driver v1.17.1
go.uber.org/zap v1.27.0
)

require (
Expand Down Expand Up @@ -68,7 +67,6 @@ require (
github.com/xdg-go/scram v1.1.2 // indirect
github.com/xdg-go/stringprep v1.0.4 // indirect
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
go.uber.org/multierr v1.10.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/net v0.25.0 // indirect
golang.org/x/sync v0.8.0 // indirect
Expand Down
6 changes: 0 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -170,12 +170,6 @@ github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfS
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM=
go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
Expand Down
Loading

0 comments on commit 4800a72

Please sign in to comment.