package handlers import ( "net/http" "strconv" "github.com/danilsolovyov/croupierCbrf/internal/dal" "github.com/danilsolovyov/croupierCbrf/internal/utils" ) func (h *Handler) GetQuotes(w http.ResponseWriter, r *http.Request) { result, err := h.mongo.GetQuoteList(r.Context()) if err != nil { h.reportError(w, r, http.StatusInternalServerError, err.Error(), err) return } h.sendResponse(w, r, Response{ Success: true, Message: result, }) } func (h *Handler) Translate(response http.ResponseWriter, request *http.Request) { params := request.URL.Query() currencyFrom := params.Get("currencyFrom") currencyTo := params.Get("currencyTo") value := params.Get("value") if currencyFrom == "" { currencyFrom = dal.DefaultCurrency } if currencyTo == "" { currencyTo = dal.DefaultCurrency } parsedValue, err := strconv.ParseInt(value, 10, 64) if err != nil { h.reportError(response, request, http.StatusBadRequest, "invalid value format", err) return } quotes, err := h.mongo.GetQuoteList(request.Context()) if err != nil { h.reportError(response, request, http.StatusInternalServerError, err.Error(), err) return } quotesMap := utils.ArrayToMap(quotes, func(quote dal.Quote) string { return quote.ID }) result, err := utils.CurrencyExchange(quotesMap, currencyFrom, currencyTo, parsedValue) if err != nil { h.reportError(response, request, http.StatusInternalServerError, err.Error(), err) } h.sendResponse(response, request, Response{ Success: true, Message: result, }) }