Compare commits

...

5 Commits

Author SHA1 Message Date
Bel LaPointe
04a2cb01ef introduce job info slowness 2022-01-14 01:06:43 -05:00
Bel LaPointe
05a981344d whoops double line 2022-01-14 01:00:51 -05:00
Bel LaPointe
ebe777e989 config for whether to fetch job info 2022-01-14 01:00:33 -05:00
Bel LaPointe
6704b23bf1 Include ntgvisionjobinfo instructions if there 2022-01-14 00:58:34 -05:00
Bel LaPointe
aa1a2373ab quick n dirty mockless ntgvision secrets superslow lookup though 2022-01-14 00:57:06 -05:00
3 changed files with 79 additions and 10 deletions

View File

@@ -33,9 +33,74 @@ type ntgVisionJob struct {
Weight int `json:"weight"`
Equipment string `json:"equip"`
Temp string `json:"temp"`
jobinfo ntgVisionJobInfo
}
func (ntgJob ntgVisionJob) Job() Job {
type ntgVisionJobInfo struct {
StopsInfo []struct {
StopHours string `json:"stopHours"`
AppointmentTime string `json:"appointmentTime"`
Instructions string `json:"instructions"`
IsDropTrailer bool `json:"isDropTrailer"`
} `json:"stopinfos"`
PayUpTo float32 `json:"payUpTo"`
LoadState string `json:"loadStatus"`
CanBidNow bool `json:"canBidNow"`
}
func (ntgJob *ntgVisionJob) JobInfo() (ntgVisionJobInfo, error) {
if !config.Get().Brokers.NTG.JobInfo {
return ntgJob.jobinfo, nil
}
if fmt.Sprint(ntgJob.jobinfo) != fmt.Sprint(ntgVisionJobInfo{}) {
return ntgJob.jobinfo, nil
}
ji, err := ntgJob.jobInfo()
if err == ErrNoAuth {
if err := NewNTGVision().refreshAuth(); err != nil {
return ntgVisionJobInfo{}, err
}
ji, err = ntgJob.jobInfo()
}
ntgJob.jobinfo = ji
return ji, err
}
func (ntgJob *ntgVisionJob) jobInfo() (ntgVisionJobInfo, 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)
if err != nil {
return ntgVisionJobInfo{}, err
}
setNTGHeaders(request)
request.Header.Set("Authorization", "Bearer "+config.Get().Brokers.NTG.Token)
resp, err := do(request)
if err != nil {
return ntgVisionJobInfo{}, 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
}
var result ntgVisionJobInfo
err = json.Unmarshal(b, &result)
return result, err
}
func (ntgJob *ntgVisionJob) Job(info ...bool) Job {
if len(info) == 0 || !info[0] {
return ntgJob.job(ntgVisionJobInfo{})
}
jobInfo, err := ntgJob.JobInfo()
if err != nil {
log.Printf("failed to get jobinfo: %v", err)
}
return ntgJob.job(jobInfo)
}
func (ntgJob *ntgVisionJob) job(jobInfo ntgVisionJobInfo) Job {
pickup, _ := time.ParseInLocation("01/02/06", ntgJob.PickupDate, time.Local)
dropoff, _ := time.ParseInLocation("01/02/06", ntgJob.DropoffDate, time.Local)
return Job{
@@ -53,7 +118,7 @@ func (ntgJob ntgVisionJob) Job() Job {
},
Miles: ntgJob.Miles,
Weight: ntgJob.Weight,
Meta: fmt.Sprintf("equipment:%s", ntgJob.Equipment),
Meta: fmt.Sprintf("equipment:%s, secrets:%+v", ntgJob.Equipment, jobInfo),
}
}
@@ -87,7 +152,7 @@ func (ntg NTGVision) Search(states []config.State) ([]Job, error) {
jobs := make([]Job, len(ntgjobs))
for i := range jobs {
jobs[i] = ntgjobs[i].Job()
jobs[i] = ntgjobs[i].Job(true)
}
return jobs, err
}

View File

@@ -2,7 +2,8 @@
"Interval": {
"Input": "5s..10s",
"OK": "6h0m0s..6h0m0s",
"Error": "6h0m0s..6h0m0s"
"Error": "6h0m0s..6h0m0s",
"JobInfo": "60s..90s"
},
"Images": {
"ClientID": "d9ac7cabe813d10",
@@ -26,7 +27,7 @@
"Clients": {
"bel": {
"States": [
"NC"
"IL"
],
"IDs": {
"Matrix": "@bel:m.bltrucks.top"
@@ -61,7 +62,7 @@
"Matrix": {
"ReceiveEnabled": true,
"Mock": false,
"Continuation": "1318",
"Continuation": "1510",
"Homeserver": "https://m.bltrucks.top",
"Username": "@bot.m.bltrucks.top",
"Token": "mvDWB96KXMF8XhOam8EC5XVdQvSEw0CDeClcSWocBcYkwZX3FPNWZ5uOnQk2EmT1cjpzfeuD7gDYPPjOuyZlI3bE9TE35UjNOlZgi0Tugm25s91iVsbIF6kMZsCIhVMSmEf6w3jxX6wQYOWvmDZ4mu6f5c8wr221EMDcOpEzQV09d1zuBSWgKLBgjqAkYHJZ5dTRIWpEDpPgujhOFZa2ld1HiAOxrJKlIrlfDBN0CUsTlGOGplujDAr4VtpFzNRS",
@@ -72,9 +73,10 @@
"Once": true,
"Brokers": {
"NTG": {
"JobInfo": false,
"Mock": true,
"LoadPageURIFormat": "https://ntgvision.com/LoadDetails?loadId=%d",
"Token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIzMTAyOSIsInVuaXF1ZV9uYW1lIjoibm9lYXN5cnVuc3RydWNraW5nQGdtYWlsLmNvbSIsImp0aSI6IjFmYzhmNjk1LTQzNTYtNGYzZS05NWY1LWZkNWVjMDJlMDkxNyIsImlhdCI6IjEvMTAvMjAyMiAxMTo1OTozNiBQTSIsIm50Z3ZSb2xlIjoiQ2FycmllckFwcHJvdmVkIiwidXNlckNhcnJpZXJzIjoiMTUzNDIzIiwib3RyVXNlciI6IkZhbHNlIiwibmJmIjoxNjQxODU5MTc2LCJleHAiOjE2NDE5NDE5NzYsImlzcyI6Ik5URyBTZWN1cml0eSBUb2tlbiBTZXJ2aWNlIiwiYXVkIjoiTlRHIn0.kpHOBTtcQhbdloAw7xEjnkzfxf4ToMgidrLCMomZmnmKQHlD_7OQuI8nQiCTHc_ntuGtt8Ui92kwWWUiLwN_2tT2vC7Jy6m9IjwqgbAzsgTLi4jAbIwITD-awiDh4FUKDwGq3XpEjs-i7XM3rI7tTk7jg9QSDId8EF3Pt5fJq6QhztC6y7-JaSFQZLMtkSCAWmOQx_TgKgVoVbgMeiqhHbZ2hhoA7TtpEIIL5Gnfq46t3E18ExdrsO96ZCGQGcBw5x8J1ustq2cwdlFKeg4ULNWAAd1ay1hojRa7jCHs98AcoJ3Nts9-o7yEMuN2rrfpK_nm68nciwFtF-ke1KoiBg",
"Token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIzMTAyOSIsInVuaXF1ZV9uYW1lIjoibm9lYXN5cnVuc3RydWNraW5nQGdtYWlsLmNvbSIsImp0aSI6IjI3OTQ2YWRkLWFhYmQtNGFhYi1iODg2LTg5MWRkMWRlZjQwNCIsImlhdCI6IjEvMTQvMjAyMiA2OjAxOjIwIEFNIiwibnRndlJvbGUiOiJDYXJyaWVyQXBwcm92ZWQiLCJ1c2VyQ2FycmllcnMiOiIxNTM0MjMiLCJvdHJVc2VyIjoiRmFsc2UiLCJuYmYiOjE2NDIxNDAwODAsImV4cCI6MTY0MjIyMjg4MCwiaXNzIjoiTlRHIFNlY3VyaXR5IFRva2VuIFNlcnZpY2UiLCJhdWQiOiJOVEcifQ.ksvyfnoqvwYaG7HtBDX6iFUaVk9cPnJpf4Jga5YDz6CGEXk85Dk10oUiSx2SA25r3lYN9by5DZIcBbEMfk69kynC28n2Te3hOR03Q0t8p3scj9aTe99fXapVKgma2s7JG_AIdkElwg81VBgyPNo3Nvn2mPKdV3ueAOkyX2aAHK4VLMm_YcbbFxiv74mPtFgw2SwnRumtgpvlOQrW0b7SXhA0s78E3kiYAjCiSS5Y7jQE1-x3P-VOPpvfXx3c8E-nHNah210Ewp2cGFvnXEevIvB0LDGeT3_HxBocwRSVU_jCVFjWX6U96u91FQAyw3yjpgkeMhX_QU_n3Nt3uXXvew",
"Username": "noeasyrunstrucking@gmail.com",
"Password": "thumper123"
}

View File

@@ -11,9 +11,10 @@ import (
type Config struct {
Interval struct {
Input Duration
OK Duration
Error Duration
Input Duration
OK Duration
Error Duration
JobInfo Duration
}
Images struct {
ClientID string
@@ -51,6 +52,7 @@ type Config struct {
Once bool
Brokers struct {
NTG struct {
JobInfo bool
Mock bool
LoadPageURIFormat string
Token string