renamed structs and interfaces to reduce ambiguity
This commit is contained in:
+11
-11
@@ -24,13 +24,13 @@ type HttpExchangeRatesDataSource interface {
|
|||||||
Parse(c core.Context, content []byte) (*models.LatestExchangeRateResponse, error)
|
Parse(c core.Context, content []byte) (*models.LatestExchangeRateResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CommonHttpExchangeRatesDataSource defines the structure of common http exchange rates data source
|
// CommonHttpExchangeRatesDataProvider defines the structure of common http exchange rates data provider
|
||||||
type CommonHttpExchangeRatesDataSource struct {
|
type CommonHttpExchangeRatesDataProvider struct {
|
||||||
ExchangeRatesDataSource
|
ExchangeRatesDataProvider
|
||||||
dataSource HttpExchangeRatesDataSource
|
dataSource HttpExchangeRatesDataSource
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *CommonHttpExchangeRatesDataSource) GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error) {
|
func (e *CommonHttpExchangeRatesDataProvider) GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error) {
|
||||||
transport := http.DefaultTransport.(*http.Transport).Clone()
|
transport := http.DefaultTransport.(*http.Transport).Clone()
|
||||||
utils.SetProxyUrl(transport, currentConfig.ExchangeRatesProxy)
|
utils.SetProxyUrl(transport, currentConfig.ExchangeRatesProxy)
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ func (e *CommonHttpExchangeRatesDataSource) GetLatestExchangeRates(c core.Contex
|
|||||||
requests, err := e.dataSource.BuildRequests()
|
requests, err := e.dataSource.BuildRequests()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf(c, "[http_exchange_rates_datasource.GetLatestExchangeRates] failed to build requests for user \"uid:%d\", because %s", uid, err.Error())
|
log.Errorf(c, "[common_http_exchange_rates_data_provider.GetLatestExchangeRates] failed to build requests for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
return nil, errs.ErrFailedToRequestRemoteApi
|
return nil, errs.ErrFailedToRequestRemoteApi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,24 +66,24 @@ func (e *CommonHttpExchangeRatesDataSource) GetLatestExchangeRates(c core.Contex
|
|||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf(c, "[http_exchange_rates_datasource.GetLatestExchangeRates] failed to request latest exchange rate data for user \"uid:%d\", because %s", uid, err.Error())
|
log.Errorf(c, "[common_http_exchange_rates_data_provider.GetLatestExchangeRates] failed to request latest exchange rate data for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
return nil, errs.ErrFailedToRequestRemoteApi
|
return nil, errs.ErrFailedToRequestRemoteApi
|
||||||
}
|
}
|
||||||
|
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
body, err := io.ReadAll(resp.Body)
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
|
||||||
log.Debugf(c, "[http_exchange_rates_datasource.GetLatestExchangeRates] response#%d is %s", i, body)
|
log.Debugf(c, "[common_http_exchange_rates_data_provider.GetLatestExchangeRates] response#%d is %s", i, body)
|
||||||
|
|
||||||
if resp.StatusCode != 200 {
|
if resp.StatusCode != 200 {
|
||||||
log.Errorf(c, "[http_exchange_rates_datasource.GetLatestExchangeRates] failed to get latest exchange rate data response for user \"uid:%d\", because response code is not %d", uid, resp.StatusCode)
|
log.Errorf(c, "[common_http_exchange_rates_data_provider.GetLatestExchangeRates] failed to get latest exchange rate data response for user \"uid:%d\", because response code is not %d", uid, resp.StatusCode)
|
||||||
return nil, errs.ErrFailedToRequestRemoteApi
|
return nil, errs.ErrFailedToRequestRemoteApi
|
||||||
}
|
}
|
||||||
|
|
||||||
exchangeRateResp, err := e.dataSource.Parse(c, body)
|
exchangeRateResp, err := e.dataSource.Parse(c, body)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf(c, "[http_exchange_rates_datasource.GetLatestExchangeRates] failed to parse response for user \"uid:%d\", because %s", uid, err.Error())
|
log.Errorf(c, "[common_http_exchange_rates_data_provider.GetLatestExchangeRates] failed to parse response for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
return nil, errs.Or(err, errs.ErrFailedToRequestRemoteApi)
|
return nil, errs.Or(err, errs.ErrFailedToRequestRemoteApi)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -125,8 +125,8 @@ func (e *CommonHttpExchangeRatesDataSource) GetLatestExchangeRates(c core.Contex
|
|||||||
return finalExchangeRateResponse, nil
|
return finalExchangeRateResponse, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newCommonHttpExchangeRatesDataSource(dataSource HttpExchangeRatesDataSource) *CommonHttpExchangeRatesDataSource {
|
func newCommonHttpExchangeRatesDataProvider(dataSource HttpExchangeRatesDataSource) *CommonHttpExchangeRatesDataProvider {
|
||||||
return &CommonHttpExchangeRatesDataSource{
|
return &CommonHttpExchangeRatesDataProvider{
|
||||||
dataSource: dataSource,
|
dataSource: dataSource,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -6,8 +6,8 @@ import (
|
|||||||
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ExchangeRatesDataSource defines the structure of exchange rates data source
|
// ExchangeRatesDataProvider defines the structure of exchange rates data provider
|
||||||
type ExchangeRatesDataSource interface {
|
type ExchangeRatesDataProvider interface {
|
||||||
// GetLatestExchangeRates returns the common response entities
|
// GetLatestExchangeRates returns the common response entities
|
||||||
GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error)
|
GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error)
|
||||||
}
|
}
|
||||||
+24
-24
@@ -7,71 +7,71 @@ import (
|
|||||||
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
"github.com/mayswind/ezbookkeeping/pkg/settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ExchangeRatesDataSourceContainer contains the current exchange rates data source
|
// ExchangeRatesDataProviderContainer contains the current exchange rates data provider
|
||||||
type ExchangeRatesDataSourceContainer struct {
|
type ExchangeRatesDataProviderContainer struct {
|
||||||
current ExchangeRatesDataSource
|
current ExchangeRatesDataProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize a exchange rates data source container singleton instance
|
// Initialize a exchange rates data provider container singleton instance
|
||||||
var (
|
var (
|
||||||
Container = &ExchangeRatesDataSourceContainer{}
|
Container = &ExchangeRatesDataProviderContainer{}
|
||||||
)
|
)
|
||||||
|
|
||||||
// InitializeExchangeRatesDataSource initializes the current exchange rates data source according to the config
|
// InitializeExchangeRatesDataSource initializes the current exchange rates data source according to the config
|
||||||
func InitializeExchangeRatesDataSource(config *settings.Config) error {
|
func InitializeExchangeRatesDataSource(config *settings.Config) error {
|
||||||
if config.ExchangeRatesDataSource == settings.ReserveBankOfAustraliaDataSource {
|
if config.ExchangeRatesDataSource == settings.ReserveBankOfAustraliaDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&ReserveBankOfAustraliaDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&ReserveBankOfAustraliaDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.BankOfCanadaDataSource {
|
} else if config.ExchangeRatesDataSource == settings.BankOfCanadaDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&BankOfCanadaDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&BankOfCanadaDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.CzechNationalBankDataSource {
|
} else if config.ExchangeRatesDataSource == settings.CzechNationalBankDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&CzechNationalBankDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&CzechNationalBankDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.DanmarksNationalbankDataSource {
|
} else if config.ExchangeRatesDataSource == settings.DanmarksNationalbankDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&DanmarksNationalbankDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&DanmarksNationalbankDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.EuroCentralBankDataSource {
|
} else if config.ExchangeRatesDataSource == settings.EuroCentralBankDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&EuroCentralBankDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&EuroCentralBankDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.NationalBankOfGeorgiaDataSource {
|
} else if config.ExchangeRatesDataSource == settings.NationalBankOfGeorgiaDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&NationalBankOfGeorgiaDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&NationalBankOfGeorgiaDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.CentralBankOfHungaryDataSource {
|
} else if config.ExchangeRatesDataSource == settings.CentralBankOfHungaryDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&CentralBankOfHungaryDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&CentralBankOfHungaryDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.BankOfIsraelDataSource {
|
} else if config.ExchangeRatesDataSource == settings.BankOfIsraelDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&BankOfIsraelDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&BankOfIsraelDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.CentralBankOfMyanmarDataSource {
|
} else if config.ExchangeRatesDataSource == settings.CentralBankOfMyanmarDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&CentralBankOfMyanmarDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&CentralBankOfMyanmarDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.NorgesBankDataSource {
|
} else if config.ExchangeRatesDataSource == settings.NorgesBankDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&NorgesBankDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&NorgesBankDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.NationalBankOfPolandDataSource {
|
} else if config.ExchangeRatesDataSource == settings.NationalBankOfPolandDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&NationalBankOfPolandDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&NationalBankOfPolandDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.NationalBankOfRomaniaDataSource {
|
} else if config.ExchangeRatesDataSource == settings.NationalBankOfRomaniaDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&NationalBankOfRomaniaDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&NationalBankOfRomaniaDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.BankOfRussiaDataSource {
|
} else if config.ExchangeRatesDataSource == settings.BankOfRussiaDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&BankOfRussiaDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&BankOfRussiaDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.SwissNationalBankDataSource {
|
} else if config.ExchangeRatesDataSource == settings.SwissNationalBankDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&SwissNationalBankDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&SwissNationalBankDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.NationalBankOfUkraineDataSource {
|
} else if config.ExchangeRatesDataSource == settings.NationalBankOfUkraineDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&NationalBankOfUkraineDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&NationalBankOfUkraineDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.CentralBankOfUzbekistanDataSource {
|
} else if config.ExchangeRatesDataSource == settings.CentralBankOfUzbekistanDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&CentralBankOfUzbekistanDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&CentralBankOfUzbekistanDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.InternationalMonetaryFundDataSource {
|
} else if config.ExchangeRatesDataSource == settings.InternationalMonetaryFundDataSource {
|
||||||
Container.current = newCommonHttpExchangeRatesDataSource(&InternationalMonetaryFundDataSource{})
|
Container.current = newCommonHttpExchangeRatesDataProvider(&InternationalMonetaryFundDataSource{})
|
||||||
return nil
|
return nil
|
||||||
} else if config.ExchangeRatesDataSource == settings.UserCustomExchangeRatesDataSource {
|
} else if config.ExchangeRatesDataSource == settings.UserCustomExchangeRatesDataSource {
|
||||||
Container.current = newUserCustomExchangeRatesDataSource()
|
Container.current = newUserCustomExchangeRatesDataProvider()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ func InitializeExchangeRatesDataSource(config *settings.Config) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetLatestExchangeRates returns the latest exchange rates data from the current exchange rates data source
|
// GetLatestExchangeRates returns the latest exchange rates data from the current exchange rates data source
|
||||||
func (e *ExchangeRatesDataSourceContainer) GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error) {
|
func (e *ExchangeRatesDataProviderContainer) GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error) {
|
||||||
if Container.current == nil {
|
if Container.current == nil {
|
||||||
return nil, errs.ErrInvalidExchangeRatesDataSource
|
return nil, errs.ErrInvalidExchangeRatesDataSource
|
||||||
}
|
}
|
||||||
+8
-8
@@ -15,25 +15,25 @@ import (
|
|||||||
|
|
||||||
const userDataSourceType = "user_custom"
|
const userDataSourceType = "user_custom"
|
||||||
|
|
||||||
// UserCustomExchangeRatesDataSource defines the structure of user custom exchange rates data source
|
// UserCustomExchangeRatesDataProvider defines the structure of user custom exchange rates data provider
|
||||||
type UserCustomExchangeRatesDataSource struct {
|
type UserCustomExchangeRatesDataProvider struct {
|
||||||
ExchangeRatesDataSource
|
ExchangeRatesDataProvider
|
||||||
users *services.UserService
|
users *services.UserService
|
||||||
userCustomExchangeRates *services.UserCustomExchangeRatesService
|
userCustomExchangeRates *services.UserCustomExchangeRatesService
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *UserCustomExchangeRatesDataSource) GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error) {
|
func (e *UserCustomExchangeRatesDataProvider) GetLatestExchangeRates(c core.Context, uid int64, currentConfig *settings.Config) (*models.LatestExchangeRateResponse, error) {
|
||||||
user, err := e.users.GetUserById(c, uid)
|
user, err := e.users.GetUserById(c, uid)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf(c, "[user_custom_datasource.GetLatestExchangeRates] failed to get user \"uid:%d\", because %s", uid, err.Error())
|
log.Errorf(c, "[user_custom_data_provider.GetLatestExchangeRates] failed to get user \"uid:%d\", because %s", uid, err.Error())
|
||||||
return nil, errs.Or(err, errs.ErrOperationFailed)
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
}
|
}
|
||||||
|
|
||||||
customExchangeRates, err := e.userCustomExchangeRates.GetAllCustomExchangeRatesByUid(c, uid)
|
customExchangeRates, err := e.userCustomExchangeRates.GetAllCustomExchangeRatesByUid(c, uid)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf(c, "[user_custom_datasource.GetLatestExchangeRates] failed to get user custom exchange rates for user \"uid:%d\", because %s", uid, err.Error())
|
log.Errorf(c, "[user_custom_data_provider.GetLatestExchangeRates] failed to get user custom exchange rates for user \"uid:%d\", because %s", uid, err.Error())
|
||||||
return nil, errs.Or(err, errs.ErrOperationFailed)
|
return nil, errs.Or(err, errs.ErrOperationFailed)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,8 +93,8 @@ func (e *UserCustomExchangeRatesDataSource) GetLatestExchangeRates(c core.Contex
|
|||||||
return finalExchangeRateResponse, nil
|
return finalExchangeRateResponse, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func newUserCustomExchangeRatesDataSource() *UserCustomExchangeRatesDataSource {
|
func newUserCustomExchangeRatesDataProvider() *UserCustomExchangeRatesDataProvider {
|
||||||
return &UserCustomExchangeRatesDataSource{
|
return &UserCustomExchangeRatesDataProvider{
|
||||||
users: services.Users,
|
users: services.Users,
|
||||||
userCustomExchangeRates: services.UserCustomExchangeRates,
|
userCustomExchangeRates: services.UserCustomExchangeRates,
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user