Compare commits

...

9 Commits

Author SHA1 Message Date
bel
db1838b3ab up matrix timeout in http client 2022-02-25 21:59:54 -07:00
bel
ec030676ea update image with not avail over del 2022-02-24 09:26:45 -07:00
Bel LaPointe
3b4dd1ba70 do not delete old jobs text 2022-02-24 09:23:22 -07:00
bel
003ffb1231 bad matrix cert ok 2022-02-02 07:12:18 -07:00
bel
cdabce7a56 SH 2022-01-31 09:35:56 -07:00
bel
0ab534624a NO 2022-01-31 09:31:40 -07:00
bel
b3ce49788b little 2022-01-30 08:43:57 -07:00
bel
bbe839bb88 make working hours, weekdays configurable by impl ntg 2022-01-30 08:34:14 -07:00
bel
60f19968e3 add ntg configurable work hours, weekdays 2022-01-30 08:29:06 -07:00
8 changed files with 61 additions and 17 deletions

View File

@@ -224,14 +224,26 @@ func (ntg NTGVision) SearchZips(zips []string) ([]Job, error) {
func (ntg NTGVision) workingHours(now time.Time) bool { func (ntg NTGVision) workingHours(now time.Time) bool {
// TODO assert M-F 9-4 EST // TODO assert M-F 9-4 EST
now = now.In(time.FixedZone("EST", -5*60*60)) now = now.In(time.FixedZone("EST", -5*60*60))
logtr.Debugf("ntg.workingHours: %s: weekday=%v (sun=%v, sat=%v), hour=%v (ok=9..16)", now.String(), now.Weekday(), time.Sunday, time.Saturday, now.Hour()) working := config.Get().Brokers.NTG.Working
switch now.Weekday() { logtr.Debugf("ntg.workingHours: now=%s, weekday=%v, hour=%v (ok=%+v)", now.String(), now.Weekday(), now.Hour(), working)
case time.Sunday, time.Saturday: if ok := func() bool {
for _, hr := range working.Hours {
if now.Hour() == hr {
return true
}
}
return false
}(); !ok {
return false return false
} }
switch now.Hour() { if ok := func() bool {
case 9, 10, 11, 12, 13, 14, 15, 16: for _, weekday := range working.Weekdays {
default: if now.Weekday() == time.Weekday(weekday) {
return true
}
}
return false
}(); !ok {
return false return false
} }
return true return true

View File

@@ -1,11 +1,17 @@
package broker package broker
import ( import (
"local/truckstop/config"
"os"
"testing" "testing"
"time" "time"
) )
func TestWorkingHoursNTG(t *testing.T) { func TestWorkingHoursNTG(t *testing.T) {
os.Setenv("CONFIG", "../config.json")
if err := config.Refresh(nil); err != nil {
t.Fatal(err)
}
ntg := NTGVision{} ntg := NTGVision{}
if !ntg.workingHours(time.Date(2022, 1, 27, 12, 0, 0, 0, time.FixedZone("MST", -7*60*60))) { if !ntg.workingHours(time.Date(2022, 1, 27, 12, 0, 0, 0, time.FixedZone("MST", -7*60*60))) {
t.Fatal("noon MST not ok") t.Fatal("noon MST not ok")

View File

@@ -79,6 +79,10 @@
"UseZips": true, "UseZips": true,
"RadiusMiles": 200, "RadiusMiles": 200,
"NTG": { "NTG": {
"Working": {
"Hours": [6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
"Weekdays": [1, 2, 3, 4, 5]
},
"Enabled": false, "Enabled": false,
"JobInfo": true, "JobInfo": true,
"Mock": true, "Mock": true,

View File

@@ -83,6 +83,10 @@
"Password": "p" "Password": "p"
}, },
"NTG": { "NTG": {
"Working": {
"Hours": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
"Weekdays": [0, 1, 2, 3, 4, 5, 6]
},
"Enabled": true, "Enabled": true,
"JobInfo": true, "JobInfo": true,
"Mock": true, "Mock": true,

View File

@@ -67,6 +67,10 @@ type Config struct {
UseZips bool UseZips bool
RadiusMiles int RadiusMiles int
NTG struct { NTG struct {
Working struct {
Hours []int
Weekdays []int
}
Enabled bool Enabled bool
JobInfo bool JobInfo bool
Mock bool Mock bool

13
main.go
View File

@@ -126,7 +126,9 @@ func matrixrecv() error {
logtr.Errorf("failed to mark state gathered @%s: %v", key, err) logtr.Errorf("failed to mark state gathered @%s: %v", key, err)
} }
} }
if config.Get().Brokers.UseZips {
setNewZips(zips) setNewZips(zips)
}
}() }()
func() { func() {
logtr.Verbosef("looking for states") logtr.Verbosef("looking for states")
@@ -150,7 +152,9 @@ func matrixrecv() error {
logtr.Errorf("failed to mark state gathered @%s: %v", key, err) logtr.Errorf("failed to mark state gathered @%s: %v", key, err)
} }
} }
if !config.Get().Brokers.UseZips {
setNewStates(states) setNewStates(states)
}
}() }()
func() { func() {
logtr.Verbosef("looking for radius") logtr.Verbosef("looking for radius")
@@ -371,7 +375,7 @@ func __main() error {
logtr.Errorf("failed _main: %v", err) logtr.Errorf("failed _main: %v", err)
} }
if config.Get().Once { if config.Get().Once {
time.Sleep(3 * time.Second) time.Sleep(10 * time.Second)
return err return err
} }
if err != nil { if err != nil {
@@ -522,15 +526,12 @@ func updateDeadJobs(jobs []broker.Job) error {
return err return err
} }
*/ */
if err := message.NewMatrix().Remove(recorded.MatrixID); err != nil {
logtr.Debugf("failed to remove matrix: %v: %v", recorded.MatrixID, err)
}
if err := db.Set(listEntry, nil); err != nil { if err := db.Set(listEntry, nil); err != nil {
logtr.Debugf("failed to remove db: %v: %v", listEntry, err) logtr.Debugf("failed to remove db: %v: %v", listEntry, err)
} }
for _, imageid := range recorded.MatrixImageIDs { for _, imageid := range recorded.MatrixImageIDs {
if err := message.NewMatrix().Remove(imageid); err != nil { if err := message.NewMatrix().Update(imageid, "<job no longer available>"); err != nil {
logtr.Debugf("failed to remove matrix image: %v: %v", imageid, err) logtr.Debugf("failed to update matrix image: %v: %v", imageid, err)
} }
} }
} }

View File

@@ -64,7 +64,7 @@ func uploadImage(b []byte) (string, error) {
request.Header.Set("Authorization", "Bearer "+images.AccessToken) request.Header.Set("Authorization", "Bearer "+images.AccessToken)
request.Header.Set("Content-Type", writer.FormDataContentType()) request.Header.Set("Content-Type", writer.FormDataContentType())
c := &http.Client{Timeout: time.Minute} c := &http.Client{Timeout: time.Minute * 5}
response, err := c.Do(request) response, err := c.Do(request)
if err != nil { if err != nil {
return "", err return "", err

View File

@@ -2,6 +2,7 @@ package message
import ( import (
"bytes" "bytes"
"crypto/tls"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"local/truckstop/config" "local/truckstop/config"
@@ -45,7 +46,19 @@ func newMatrix(conf config.Matrix, cont string) Matrix {
} }
func (m Matrix) getclient() (*gomatrix.Client, error) { func (m Matrix) getclient() (*gomatrix.Client, error) {
return gomatrix.NewClient(m.homeserver, m.username, m.token) client, err := gomatrix.NewClient(m.homeserver, m.username, m.token)
if err != nil {
return nil, err
}
client.Client = &http.Client{
Timeout: time.Minute * 5,
Transport: &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
},
}
return client, nil
} }
func (m Matrix) Continuation() string { func (m Matrix) Continuation() string {