mirror of
https://github.com/netscrawler/changeAPI.git
synced 2026-09-05 08:29:36 +00:00
Squashed commit of the following:
commit5b11756af6Author: netscrawler <mariarthyjamesoo@gmail.com> Date: Thu Jul 4 00:44:15 2024 +0300 v0.1 commitc99f477e35Author: netscrawler <mariarthyjamesoo@gmail.com> Date: Sun Jun 30 20:44:53 2024 +0300 v0.0.6
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
package converter
|
||||
|
||||
import (
|
||||
"context"
|
||||
"converter/internal/lib/logger/sl"
|
||||
"converter/internal/lib/rateExtract"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
)
|
||||
|
||||
type Converter struct {
|
||||
log *slog.Logger
|
||||
}
|
||||
|
||||
// New returns a new instance of the Converter service.
|
||||
func New(
|
||||
log *slog.Logger,
|
||||
|
||||
) *Converter {
|
||||
return &Converter{
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Converter) Convert(
|
||||
ctx context.Context,
|
||||
amount uint32,
|
||||
currency string,
|
||||
) (uint32, float32, error) {
|
||||
const op = "converter.convert"
|
||||
log := c.log.With(
|
||||
slog.String("op", op),
|
||||
slog.String("currency", currency),
|
||||
slog.Any("amount", amount),
|
||||
)
|
||||
log.Info("convertation")
|
||||
var convertedAmount uint32
|
||||
//TODO extract rate
|
||||
rate, err := rateExtract.GetExchangeRate(currency)
|
||||
if err != nil {
|
||||
log.Error("Error extracting rate", sl.Err(err))
|
||||
return 0, 0, fmt.Errorf("%s: %w", op, err)
|
||||
}
|
||||
|
||||
convertedAmount = uint32(float32(amount) * rate.Rate)
|
||||
|
||||
return convertedAmount, rate.Rate, nil
|
||||
}
|
||||
Reference in New Issue
Block a user