Mock ntg search job info

This commit is contained in:
Bel LaPointe
2022-01-14 10:40:49 -05:00
parent 6f972d71ba
commit bda1fd6f15
6 changed files with 133 additions and 48 deletions

View File

@@ -16,6 +16,7 @@ import (
type NTGVision struct {
searcher interface {
search(states []config.State) (io.ReadCloser, error)
searchJob(id int64) (io.ReadCloser, error)
}
}
@@ -43,13 +44,14 @@ type ntgVisionJobInfo struct {
Instructions string `json:"instructions"`
IsDropTrailer bool `json:"isDropTrailer"`
} `json:"stopinfos"`
PayUpTo float32 `json:"payUpTo"`
LoadState string `json:"loadStatus"`
PayUpTo float32 `json:"payUpTo"`
TotalCarrierRate float32 `json:"totalCarrierRate"`
LoadState string `json:"loadStatus"`
//CanBidNow bool `json:"canBidNow"`
}
func (ji ntgVisionJobInfo) IsZero() bool {
return len(ji.StopsInfo) == 0 && ji.PayUpTo == 0 && ji.LoadState == ""
return len(ji.StopsInfo) == 0 && ji.TotalCarrierRate == 0 && ji.PayUpTo == 0 && ji.LoadState == ""
}
func (ji ntgVisionJobInfo) String() string {
@@ -60,6 +62,9 @@ func (ji ntgVisionJobInfo) String() string {
if ji.PayUpTo != 0 {
out = fmt.Sprintf("\nPAYS:%v\n%s", ji.PayUpTo, out)
}
if ji.TotalCarrierRate != 0 {
out = fmt.Sprintf("%s Total_Carrier_Rate:%v", out, ji.TotalCarrierRate)
}
if ji.LoadState != "" {
out = fmt.Sprintf("%s Auction:%s", out, ji.LoadState)
}
@@ -90,13 +95,8 @@ func (ntgJob *ntgVisionJob) JobInfo() (ntgVisionJobInfo, error) {
} else if err := json.Unmarshal(b, &ntgJob.jobinfo); err == nil {
return ntgJob.jobinfo, nil
}
ji, err := ntgJob.jobInfo()
if err == ErrNoAuth {
if err := NewNTGVision().refreshAuth(); err != nil {
return ntgVisionJobInfo{}, err
}
ji, err = ntgJob.jobInfo()
}
ntg := NewNTGVision()
ji, err := ntg.SearchJob(ntgJob.ID)
if err == nil {
ntgJob.jobinfo = ji
b, err := json.Marshal(ntgJob.jobinfo)
@@ -107,26 +107,24 @@ func (ntgJob *ntgVisionJob) JobInfo() (ntgVisionJobInfo, error) {
return ji, err
}
func (ntgJob *ntgVisionJob) jobInfo() (ntgVisionJobInfo, error) {
func (ntg NTGVision) searchJob(id int64) (io.ReadCloser, error) {
time.Sleep(config.Get().Interval.JobInfo.Get())
request, err := http.NewRequest(http.MethodGet, fmt.Sprintf(`https://ntgvision.com/api/v1/load/LoadDetails?loadId=%v`, ntgJob.ID), nil)
request, err := http.NewRequest(http.MethodGet, fmt.Sprintf(`https://ntgvision.com/api/v1/load/LoadDetails?loadId=%v`, id), nil)
if err != nil {
return ntgVisionJobInfo{}, err
return nil, err
}
setNTGHeaders(request)
resp, err := do(request)
if err != nil {
return ntgVisionJobInfo{}, err
return nil, err
}
defer resp.Body.Close()
b, _ := ioutil.ReadAll(resp.Body)
log.Printf("fetch ntg job info %+v: %d: %s", request, resp.StatusCode, b)
if resp.StatusCode > 400 && resp.StatusCode < 500 && resp.StatusCode != 404 && resp.StatusCode != 410 {
return ntgVisionJobInfo{}, ErrNoAuth
return nil, ErrNoAuth
}
var result ntgVisionJobInfo
err = json.Unmarshal(b, &result)
return result, err
return io.NopCloser(bytes.NewReader(b)), nil
}
func (ntgJob *ntgVisionJob) Job() Job {
@@ -162,6 +160,9 @@ func (ntgJob *ntgVisionJob) Job() Job {
func NewNTGVision() NTGVision {
ntgv := NTGVision{}
ntgv.searcher = ntgv
if config.Get().Brokers.NTG.Mock {
ntgv = ntgv.WithMock()
}
return ntgv
}
@@ -170,6 +171,22 @@ func (ntg NTGVision) WithMock() NTGVision {
return ntg
}
func (ntg NTGVision) SearchJob(id int64) (ntgVisionJobInfo, error) {
rc, err := ntg.searcher.searchJob(id)
if err == ErrNoAuth {
if err := ntg.refreshAuth(); err != nil {
return ntgVisionJobInfo{}, err
}
rc, err = ntg.searcher.searchJob(id)
}
if err != nil {
return ntgVisionJobInfo{}, err
}
var result ntgVisionJobInfo
err = json.NewDecoder(rc).Decode(&result)
return result, err
}
func (ntg NTGVision) Search(states []config.State) ([]Job, error) {
rc, err := ntg.searcher.search(states)
if err != nil {