-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathget_reports_pegout.go
More file actions
35 lines (32 loc) · 1.35 KB
/
get_reports_pegout.go
File metadata and controls
35 lines (32 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package handlers
import (
"github.com/rsksmart/liquidity-provider-server/internal/adapters/entrypoints/rest"
"github.com/rsksmart/liquidity-provider-server/internal/usecases/pegout"
"github.com/rsksmart/liquidity-provider-server/pkg"
"net/http"
)
// NewGetReportsPegoutHandler
// @Title Get Pegout Reports
// @Description Get the last pegouts on the API. Included in the management API.
// @Success 200 pkg.GetPegoutReportResponse
// @Route /reports/pegout [get]
func NewGetReportsPegoutHandler(useCase *pegout.GetPegoutReportUseCase) http.HandlerFunc {
return func(w http.ResponseWriter, req *http.Request) {
var err error
pegoutReport, err := useCase.Run(req.Context())
if err != nil {
jsonErr := rest.NewErrorResponseWithDetails(UnknownErrorMessage, rest.DetailsFromError(err), false)
rest.JsonErrorResponse(w, http.StatusInternalServerError, jsonErr)
return
}
response := pkg.GetPegoutReportResponse{
NumberOfQuotes: pegoutReport.NumberOfQuotes,
MinimumQuoteValue: pegoutReport.MinimumQuoteValue.AsBigInt(),
MaximumQuoteValue: pegoutReport.MaximumQuoteValue.AsBigInt(),
AverageQuoteValue: pegoutReport.AverageQuoteValue.AsBigInt(),
TotalFeesCollected: pegoutReport.TotalFeesCollected.AsBigInt(),
AverageFeePerQuote: pegoutReport.AverageFeePerQuote.AsBigInt(),
}
rest.JsonResponseWithBody(w, http.StatusOK, &response)
}
}