Compare commits

..

6 Commits

Author SHA1 Message Date
Bel LaPointe
550ce91a7f accept more noauth codes from ntg 2022-01-11 08:35:07 -05:00
Bel LaPointe
9d8f561b54 logs 2022-01-11 08:24:46 -05:00
Bel LaPointe
e12299ac20 add config name for identifying who wants what 2022-01-11 08:16:02 -05:00
Bel LaPointe
29ae26153f add logs 2022-01-11 07:58:08 -05:00
Bel LaPointe
8109bb3fa0 sleep on start before getting email 2022-01-11 07:57:11 -05:00
Bel LaPointe
27605997c1 emailer configurable interval 2022-01-11 07:50:58 -05:00
6 changed files with 27 additions and 13 deletions

View File

@@ -2,6 +2,7 @@ package broker
import (
"fmt"
"local/truckstop/config"
"time"
)
@@ -37,7 +38,8 @@ func (j JobLocation) String() string {
func (j Job) FormatMultilineText() string {
return fmt.Sprintf(
"--- %s => %s ---\nPickup: %s\nDropoff: %s\nNotes: %d lbs, %d miles, %s",
"--- %s: %s => %s ---\nPickup: %s\nDropoff: %s\nNotes: %d lbs, %d miles, %s",
config.Get().Name,
j.Pickup.State,
j.Dropoff.State,
j.Pickup.String(),

View File

@@ -146,7 +146,7 @@ func (ntg NTGVision) _search(states []config.State) (io.ReadCloser, error) {
if resp.StatusCode != http.StatusOK {
b, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
if resp.StatusCode > 400 && resp.StatusCode < 404 {
if resp.StatusCode > 400 && resp.StatusCode < 500 && resp.StatusCode != 404 && resp.StatusCode != 410 {
return nil, ErrNoAuth
}
return nil, fmt.Errorf("bad status searching ntg: %d: %s", resp.StatusCode, b)

View File

@@ -1,7 +1,9 @@
{
"Name": "pa",
"Interval": {
"OK": "6h0m0s",
"Error": "6h"
"Error": "6h",
"Email": "15m"
},
"States": [
"GA"

View File

@@ -10,7 +10,9 @@ import (
)
type Config struct {
Name string
Interval struct {
Email Duration
OK Duration
Error Duration
}

13
main.go
View File

@@ -21,17 +21,16 @@ var stateFinder = regexp.MustCompile(`[A-Za-z]+`)
func main() {
lock := &sync.Mutex{}
go func() {
c := time.NewTicker(time.Minute)
for range c.C {
if !config.Get().EmailerEnabled {
continue
}
for {
time.Sleep(config.Get().Interval.Email.Get())
if config.Get().EmailerEnabled {
lock.Lock()
if err := email(); err != nil {
log.Print(err)
}
lock.Unlock()
}
}
}()
if err := _main(); err != nil {
panic(err)
@@ -111,12 +110,15 @@ func _main() error {
}
func _mainOne() error {
log.Println("config.refreshing...")
if err := config.Refresh(); err != nil {
return err
}
log.Println("once...")
if err := once(); err != nil {
return err
}
log.Println("/_mainOne")
return nil
}
@@ -137,6 +139,7 @@ func once() error {
if err := sendJob(jobs[i]); err != nil {
return err
}
log.Println("sent job", jobs[i])
if err := config.Get().DB().Set(jobs[i].ID, []byte(`sent`)); err != nil {
return err
}

View File

@@ -3,8 +3,13 @@ todo:
subtasks:
- banlist criteria like vendors, brokers, metadata
- quiet hours
- setup pa on element
- setup ma on element
- accept states via element for one system
- set up copy for caleb, broc
done:
- setup pa on element
- configurable email interval
- jitter on intervals, including dedicated err span
- email doesnt get all matches
- send jobs
- read jobs