Mock ntg search job info
parent
6f972d71ba
commit
bda1fd6f15
|
|
@ -16,6 +16,7 @@ import (
|
||||||
type NTGVision struct {
|
type NTGVision struct {
|
||||||
searcher interface {
|
searcher interface {
|
||||||
search(states []config.State) (io.ReadCloser, error)
|
search(states []config.State) (io.ReadCloser, error)
|
||||||
|
searchJob(id int64) (io.ReadCloser, error)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,13 +44,14 @@ type ntgVisionJobInfo struct {
|
||||||
Instructions string `json:"instructions"`
|
Instructions string `json:"instructions"`
|
||||||
IsDropTrailer bool `json:"isDropTrailer"`
|
IsDropTrailer bool `json:"isDropTrailer"`
|
||||||
} `json:"stopinfos"`
|
} `json:"stopinfos"`
|
||||||
PayUpTo float32 `json:"payUpTo"`
|
PayUpTo float32 `json:"payUpTo"`
|
||||||
LoadState string `json:"loadStatus"`
|
TotalCarrierRate float32 `json:"totalCarrierRate"`
|
||||||
|
LoadState string `json:"loadStatus"`
|
||||||
//CanBidNow bool `json:"canBidNow"`
|
//CanBidNow bool `json:"canBidNow"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ji ntgVisionJobInfo) IsZero() bool {
|
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 {
|
func (ji ntgVisionJobInfo) String() string {
|
||||||
|
|
@ -60,6 +62,9 @@ func (ji ntgVisionJobInfo) String() string {
|
||||||
if ji.PayUpTo != 0 {
|
if ji.PayUpTo != 0 {
|
||||||
out = fmt.Sprintf("\nPAYS:%v\n%s", ji.PayUpTo, out)
|
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 != "" {
|
if ji.LoadState != "" {
|
||||||
out = fmt.Sprintf("%s Auction:%s", out, 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 {
|
} else if err := json.Unmarshal(b, &ntgJob.jobinfo); err == nil {
|
||||||
return ntgJob.jobinfo, nil
|
return ntgJob.jobinfo, nil
|
||||||
}
|
}
|
||||||
ji, err := ntgJob.jobInfo()
|
ntg := NewNTGVision()
|
||||||
if err == ErrNoAuth {
|
ji, err := ntg.SearchJob(ntgJob.ID)
|
||||||
if err := NewNTGVision().refreshAuth(); err != nil {
|
|
||||||
return ntgVisionJobInfo{}, err
|
|
||||||
}
|
|
||||||
ji, err = ntgJob.jobInfo()
|
|
||||||
}
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
ntgJob.jobinfo = ji
|
ntgJob.jobinfo = ji
|
||||||
b, err := json.Marshal(ntgJob.jobinfo)
|
b, err := json.Marshal(ntgJob.jobinfo)
|
||||||
|
|
@ -107,26 +107,24 @@ func (ntgJob *ntgVisionJob) JobInfo() (ntgVisionJobInfo, error) {
|
||||||
return ji, err
|
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())
|
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 {
|
if err != nil {
|
||||||
return ntgVisionJobInfo{}, err
|
return nil, err
|
||||||
}
|
}
|
||||||
setNTGHeaders(request)
|
setNTGHeaders(request)
|
||||||
resp, err := do(request)
|
resp, err := do(request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ntgVisionJobInfo{}, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
b, _ := ioutil.ReadAll(resp.Body)
|
b, _ := ioutil.ReadAll(resp.Body)
|
||||||
log.Printf("fetch ntg job info %+v: %d: %s", request, resp.StatusCode, b)
|
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 {
|
if resp.StatusCode > 400 && resp.StatusCode < 500 && resp.StatusCode != 404 && resp.StatusCode != 410 {
|
||||||
return ntgVisionJobInfo{}, ErrNoAuth
|
return nil, ErrNoAuth
|
||||||
}
|
}
|
||||||
var result ntgVisionJobInfo
|
return io.NopCloser(bytes.NewReader(b)), nil
|
||||||
err = json.Unmarshal(b, &result)
|
|
||||||
return result, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ntgJob *ntgVisionJob) Job() Job {
|
func (ntgJob *ntgVisionJob) Job() Job {
|
||||||
|
|
@ -162,6 +160,9 @@ func (ntgJob *ntgVisionJob) Job() Job {
|
||||||
func NewNTGVision() NTGVision {
|
func NewNTGVision() NTGVision {
|
||||||
ntgv := NTGVision{}
|
ntgv := NTGVision{}
|
||||||
ntgv.searcher = ntgv
|
ntgv.searcher = ntgv
|
||||||
|
if config.Get().Brokers.NTG.Mock {
|
||||||
|
ntgv = ntgv.WithMock()
|
||||||
|
}
|
||||||
return ntgv
|
return ntgv
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -170,6 +171,22 @@ func (ntg NTGVision) WithMock() NTGVision {
|
||||||
return ntg
|
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) {
|
func (ntg NTGVision) Search(states []config.State) ([]Job, error) {
|
||||||
rc, err := ntg.searcher.search(states)
|
rc, err := ntg.searcher.search(states)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
|
|
@ -20,3 +20,9 @@ func (ntgm NTGVisionMock) search(states []config.State) (io.ReadCloser, error) {
|
||||||
b, err := ioutil.ReadFile(path)
|
b, err := ioutil.ReadFile(path)
|
||||||
return io.NopCloser(bytes.NewReader(b)), err
|
return io.NopCloser(bytes.NewReader(b)), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ntgm NTGVisionMock) searchJob(id int64) (io.ReadCloser, error) {
|
||||||
|
path := path.Join(os.Getenv("GOPATH"), "src", "local", "truckstop", "broker", "testdata", "ntgvision_jobinfo_response.json")
|
||||||
|
b, err := ioutil.ReadFile(path)
|
||||||
|
return io.NopCloser(bytes.NewReader(b)), err
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
{
|
||||||
|
"headerSummary": "A to B",
|
||||||
|
"loadId": 123,
|
||||||
|
"miles": 123,
|
||||||
|
"weight": 123,
|
||||||
|
"temp": null,
|
||||||
|
"equipment": "equipment",
|
||||||
|
"categoryName": "category",
|
||||||
|
"categoryLabel": "category generic",
|
||||||
|
"cargoInformation": [
|
||||||
|
"carto info"
|
||||||
|
],
|
||||||
|
"loadRequirements": [
|
||||||
|
"load requirements"
|
||||||
|
],
|
||||||
|
"stopInfos": [
|
||||||
|
{
|
||||||
|
"loadInfoIds": [
|
||||||
|
123
|
||||||
|
],
|
||||||
|
"stopDateTime": "0001-01-01T00:00:00",
|
||||||
|
"isPickup": true,
|
||||||
|
"location": "A",
|
||||||
|
"stopDate": "Friday, 01/14/22",
|
||||||
|
"stopHours": "10:00 - 12:00",
|
||||||
|
"appointmentTime": "",
|
||||||
|
"appointmentType": "FCFS",
|
||||||
|
"instructions": "instruction",
|
||||||
|
"isDropTrailer": false,
|
||||||
|
"shipperName": "client",
|
||||||
|
"processedStopDate": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"loadInfoIds": [
|
||||||
|
123
|
||||||
|
],
|
||||||
|
"stopDateTime": "0001-01-01T00:00:00",
|
||||||
|
"isPickup": false,
|
||||||
|
"location": "B",
|
||||||
|
"stopDate": "Monday, 01/17/22",
|
||||||
|
"stopHours": "09:00 - 10:00",
|
||||||
|
"appointmentTime": "09:00",
|
||||||
|
"appointmentType": "APPT",
|
||||||
|
"instructions": "instructions",
|
||||||
|
"isDropTrailer": false,
|
||||||
|
"shipperName": "client",
|
||||||
|
"processedStopDate": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"drayStopInfos": null,
|
||||||
|
"rateInfo": null,
|
||||||
|
"isDray": false,
|
||||||
|
"equipmentGroupId": 8,
|
||||||
|
"totalCarrierRate": 2600,
|
||||||
|
"payUpTo": 2700,
|
||||||
|
"firstLoadInfoId": 123,
|
||||||
|
"loadStatus": "ACTIVE",
|
||||||
|
"hasBlockingAlert": false,
|
||||||
|
"customerLoadBlocked": false,
|
||||||
|
"canSeeRate": false,
|
||||||
|
"canBookNow": false,
|
||||||
|
"canBidNow": true,
|
||||||
|
"buttonData": {
|
||||||
|
"useBidDialog": false,
|
||||||
|
"lastBidAmount": null,
|
||||||
|
"remainingBids": 1,
|
||||||
|
"carrierPhoneNumber": null,
|
||||||
|
"carrierPhoneExtension": null
|
||||||
|
},
|
||||||
|
"stopData": [
|
||||||
|
{
|
||||||
|
"addr": "IDX NORTH CAROLINA",
|
||||||
|
"city": "Washington",
|
||||||
|
"state": "NC",
|
||||||
|
"zip": "27889"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"addr": "hibbett sports",
|
||||||
|
"city": "Abilene",
|
||||||
|
"state": "TX",
|
||||||
|
"zip": "79606"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
{
|
{
|
||||||
"id": 4650337,
|
"id": 4650337,
|
||||||
"sDate": "01/12/22",
|
"sDate": "01/12/22",
|
||||||
"sCity": "Columbus",
|
"sCity": "Advance",
|
||||||
"sState": "OH",
|
"sState": "NC",
|
||||||
"sdh": null,
|
"sdh": null,
|
||||||
"cDate": "01/13/22",
|
"cDate": "01/13/22",
|
||||||
"cCity": "Jamaica",
|
"cCity": "Sacramento",
|
||||||
"cState": "NY",
|
"cState": "CA",
|
||||||
"cdh": null,
|
"cdh": null,
|
||||||
"stopCnt": 2,
|
"stopCnt": 2,
|
||||||
"miles": 578,
|
"miles": 578,
|
||||||
|
|
@ -23,8 +23,8 @@
|
||||||
"sState": "NC",
|
"sState": "NC",
|
||||||
"sdh": null,
|
"sdh": null,
|
||||||
"cDate": "01/13/22",
|
"cDate": "01/13/22",
|
||||||
"cCity": "Atlanta",
|
"cCity": "Winston-Salem",
|
||||||
"cState": "GA",
|
"cState": "NC",
|
||||||
"cdh": null,
|
"cdh": null,
|
||||||
"stopCnt": 2,
|
"stopCnt": 2,
|
||||||
"miles": 378,
|
"miles": 378,
|
||||||
|
|
|
||||||
23
config.json
23
config.json
|
|
@ -27,31 +27,12 @@
|
||||||
"Clients": {
|
"Clients": {
|
||||||
"bel": {
|
"bel": {
|
||||||
"States": [
|
"States": [
|
||||||
"IL"
|
"OH"
|
||||||
],
|
],
|
||||||
"IDs": {
|
"IDs": {
|
||||||
"Matrix": "@bel:m.bltrucks.top"
|
"Matrix": "@bel:m.bltrucks.top"
|
||||||
},
|
},
|
||||||
"Available": 1512328400
|
"Available": 1512328400
|
||||||
},
|
|
||||||
"broc": {
|
|
||||||
"States": [
|
|
||||||
"FL",
|
|
||||||
"NC"
|
|
||||||
],
|
|
||||||
"IDs": {
|
|
||||||
"Matrix": "@broc:m.bltrucks.top"
|
|
||||||
},
|
|
||||||
"Available": 5642452800
|
|
||||||
},
|
|
||||||
"pa": {
|
|
||||||
"States": [
|
|
||||||
"NC"
|
|
||||||
],
|
|
||||||
"IDs": {
|
|
||||||
"Matrix": "@ron:m.bltrucks.top"
|
|
||||||
},
|
|
||||||
"Available": -62135596800
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Storage": [
|
"Storage": [
|
||||||
|
|
@ -61,7 +42,7 @@
|
||||||
"Message": {
|
"Message": {
|
||||||
"Matrix": {
|
"Matrix": {
|
||||||
"ReceiveEnabled": true,
|
"ReceiveEnabled": true,
|
||||||
"Mock": false,
|
"Mock": true,
|
||||||
"Homeserver": "https://m.bltrucks.top",
|
"Homeserver": "https://m.bltrucks.top",
|
||||||
"Username": "@bot.m.bltrucks.top",
|
"Username": "@bot.m.bltrucks.top",
|
||||||
"Token": "mvDWB96KXMF8XhOam8EC5XVdQvSEw0CDeClcSWocBcYkwZX3FPNWZ5uOnQk2EmT1cjpzfeuD7gDYPPjOuyZlI3bE9TE35UjNOlZgi0Tugm25s91iVsbIF6kMZsCIhVMSmEf6w3jxX6wQYOWvmDZ4mu6f5c8wr221EMDcOpEzQV09d1zuBSWgKLBgjqAkYHJZ5dTRIWpEDpPgujhOFZa2ld1HiAOxrJKlIrlfDBN0CUsTlGOGplujDAr4VtpFzNRS",
|
"Token": "mvDWB96KXMF8XhOam8EC5XVdQvSEw0CDeClcSWocBcYkwZX3FPNWZ5uOnQk2EmT1cjpzfeuD7gDYPPjOuyZlI3bE9TE35UjNOlZgi0Tugm25s91iVsbIF6kMZsCIhVMSmEf6w3jxX6wQYOWvmDZ4mu6f5c8wr221EMDcOpEzQV09d1zuBSWgKLBgjqAkYHJZ5dTRIWpEDpPgujhOFZa2ld1HiAOxrJKlIrlfDBN0CUsTlGOGplujDAr4VtpFzNRS",
|
||||||
|
|
|
||||||
3
main.go
3
main.go
|
|
@ -294,9 +294,6 @@ func once() error {
|
||||||
func getJobs() ([]broker.Job, error) {
|
func getJobs() ([]broker.Job, error) {
|
||||||
states := config.AllStates()
|
states := config.AllStates()
|
||||||
ntg := broker.NewNTGVision()
|
ntg := broker.NewNTGVision()
|
||||||
if config.Get().Brokers.NTG.Mock {
|
|
||||||
ntg = ntg.WithMock()
|
|
||||||
}
|
|
||||||
brokers := []broker.Broker{ntg}
|
brokers := []broker.Broker{ntg}
|
||||||
jobs := []broker.Job{}
|
jobs := []broker.Job{}
|
||||||
for _, broker := range brokers {
|
for _, broker := range brokers {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue