Skip to content

Commit

Permalink
fix: simplify code
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisAmora committed Feb 17, 2025
1 parent c732978 commit 2a8bffb
Showing 1 changed file with 24 additions and 55 deletions.
79 changes: 24 additions & 55 deletions deployment/data-streams/clients/entity_tool.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ type EntityToolClientImpl struct {
client *http.Client
}

// If client is nil, http.DefaultClient is used.
func NewEntityToolClient(baseURL string, client *http.Client) EntityToolClient {
if client == nil {
client = http.DefaultClient
Expand All @@ -53,91 +52,61 @@ type feedBuildObjectResponse struct {
APIs []string `json:"apis"`
}

func (c *EntityToolClientImpl) GetOverrides(ctx context.Context, in *GetOverridesRequest) (*GetOverridesResponse, error) {
func (c *EntityToolClientImpl) getFeedBuildObjectResponse(ctx context.Context, asset, quote, product string) (*feedBuildObjectResponse, error) {
endpoint := c.baseURL + "/api/feed-build-object"

// Default product to "crypto" if not provided.
product := "crypto"
if in.product != nil {
product = *in.product
}

values := url.Values{}
values.Add("base", in.asset)
values.Add("quote", in.quote)
values.Add("base", asset)
values.Add("quote", quote)
values.Add("product", product)
values.Add("configType", "DATA_STREAMS")

reqURL := endpoint + "?" + values.Encode()

req, err := http.NewRequestWithContext(ctx, http.MethodGet, reqURL, nil)
if err != nil {
return nil, errors.New("failed to create GetOverrides request: " + err.Error())
return nil, errors.New("failed to create request: " + err.Error())
}

resp, err := c.client.Do(req)
if err != nil {
return nil, errors.New("GetOverrides request failed: " + err.Error())
return nil, errors.New("request failed: " + err.Error())
}
defer resp.Body.Close()

if resp.StatusCode != http.StatusOK {
return nil, errors.New("GetOverrides unexpected status code: " + http.StatusText(resp.StatusCode))
return nil, errors.New("unexpected status code: " + http.StatusText(resp.StatusCode))
}

var result feedBuildObjectResponse
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
return nil, errors.New("failed to decode GetOverrides response: " + err.Error())
return nil, errors.New("failed to decode response: " + err.Error())
}
return &result, nil
}

if result.ExternalAdapterRequestParams.Overrides == nil {
func (c *EntityToolClientImpl) GetOverrides(ctx context.Context, in *GetOverridesRequest) (*GetOverridesResponse, error) {
product := "crypto"
if in.product != nil {
product = *in.product
}
res, err := c.getFeedBuildObjectResponse(ctx, in.asset, in.quote, product)
if err != nil {
return nil, err
}
if res.ExternalAdapterRequestParams.Overrides == nil {
return nil, errors.New("no APIs found for the given asset and quote")
}

overrides := GetOverridesResponse(result.ExternalAdapterRequestParams.Overrides)
overrides := GetOverridesResponse(res.ExternalAdapterRequestParams.Overrides)
return &overrides, nil
}

func (c *EntityToolClientImpl) GetAssetEAs(ctx context.Context, in *GetAssetEAsRequest) (*GetAssetEAsResponse, error) {
endpoint := c.baseURL + "/api/feed-build-object"

product := "crypto"
if in.product != nil {
product = *in.product
}

values := url.Values{}
values.Add("base", in.asset)
values.Add("quote", in.quote)
values.Add("product", product)
values.Add("configType", "DATA_STREAMS")

reqURL := endpoint + "?" + values.Encode()

req, err := http.NewRequestWithContext(ctx, http.MethodGet, reqURL, nil)
if err != nil {
return nil, errors.New("failed to create GetAssetEAs request: " + err.Error())
}

resp, err := c.client.Do(req)
res, err := c.getFeedBuildObjectResponse(ctx, in.asset, in.quote, product)
if err != nil {
return nil, errors.New("GetAssetEAs request failed: " + err.Error())
}
defer resp.Body.Close()

if resp.StatusCode != http.StatusOK {
return nil, errors.New("GetAssetEAs unexpected status code: " + http.StatusText(resp.StatusCode))
return nil, err
}

var result feedBuildObjectResponse
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
return nil, errors.New("failed to decode GetAssetEAs response: " + err.Error())
}

if len(result.APIs) == 0 {
if len(res.APIs) == 0 {
return nil, errors.New("no APIs found for the given asset and quote")
}

eas := GetAssetEAsResponse(result.APIs)
eas := GetAssetEAsResponse(res.APIs)
return &eas, nil
}

0 comments on commit 2a8bffb

Please sign in to comment.