Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
58
pkg/vehicleconfig/config.go
Normal file
58
pkg/vehicleconfig/config.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package vehicleconfig
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
|
||||
"fiskerinc.com/modules/common"
|
||||
"fiskerinc.com/modules/httpclient"
|
||||
"fiskerinc.com/modules/logger"
|
||||
"fiskerinc.com/modules/utils/envtool"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func NewConfigService() ConfigServiceInterface {
|
||||
return &ConfigService{
|
||||
configURL: envtool.GetEnv("ODX_URL", "http://odx.prd.cec.internal:5000/api/v1/OdxService"),
|
||||
}
|
||||
}
|
||||
|
||||
type ConfigServiceInterface interface {
|
||||
GetCDS(request common.VODCDSRequest) (map[string]string, error)
|
||||
}
|
||||
|
||||
// ConfigService is currently a mock of the actual calls to the ODX parser services
|
||||
type ConfigService struct {
|
||||
configURL string
|
||||
}
|
||||
|
||||
func (cs *ConfigService) GetCDS(request common.VODCDSRequest) (map[string]string, error) {
|
||||
header := http.Header{}
|
||||
header.Add("Content-Type", "application/json")
|
||||
resp, err := httpclient.Post(cs.configURL+"/GetVodCDSCodingData", request, header)
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
return nil, errors.WithStack(fmt.Errorf("calling ODX failed with status: %s", resp.Status))
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
respBody, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
logger.Info().Msg(fmt.Sprintf("odx service has returned the next answer: %s", string(respBody)))
|
||||
|
||||
respPayload := map[string]string{}
|
||||
err = json.Unmarshal(respBody, &respPayload)
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
return respPayload, nil
|
||||
}
|
||||
Reference in New Issue
Block a user