Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
266ccb5f98 | ||
|
|
1cc082083c |
39
main.go
39
main.go
@@ -9,6 +9,7 @@ import (
|
||||
"local/truckstop/config"
|
||||
"local/truckstop/message"
|
||||
"log"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
@@ -87,38 +88,52 @@ func matrixrecv() error {
|
||||
}()
|
||||
func() {
|
||||
log.Printf("looking for states")
|
||||
db := config.Get().DB()
|
||||
states := map[string]map[config.State]struct{}{}
|
||||
for _, msg := range messages {
|
||||
key := fmt.Sprintf("states_%d", msg.Timestamp.Unix())
|
||||
if !strings.HasPrefix(msg.Content, "!state") {
|
||||
continue
|
||||
}
|
||||
if _, ok := states[msg.Sender]; ok {
|
||||
continue
|
||||
}
|
||||
states[msg.Sender] = map[config.State]struct{}{}
|
||||
for _, state := range parseOutStates([]byte(msg.Content)) {
|
||||
states[msg.Sender][state] = struct{}{}
|
||||
if _, err := db.Get(key); err == storage.ErrNotFound {
|
||||
states[msg.Sender] = map[config.State]struct{}{}
|
||||
for _, state := range parseOutStates([]byte(msg.Content)) {
|
||||
states[msg.Sender][state] = struct{}{}
|
||||
}
|
||||
}
|
||||
if err := db.Set(key, []byte{'k'}); err != nil {
|
||||
log.Printf("failed to mark state gathered @%s: %v", key, err)
|
||||
}
|
||||
}
|
||||
setNewStates(states)
|
||||
}()
|
||||
func() {
|
||||
log.Printf("looking for pauses")
|
||||
db := config.Get().DB()
|
||||
pauses := map[string]time.Time{}
|
||||
for _, msg := range messages {
|
||||
key := fmt.Sprintf("pauses_%d", msg.Timestamp.Unix())
|
||||
if !strings.HasPrefix(msg.Content, "!available ") {
|
||||
continue
|
||||
}
|
||||
if _, ok := pauses[msg.Sender]; ok {
|
||||
continue
|
||||
}
|
||||
t, err := time.ParseInLocation(
|
||||
"2006-01-02",
|
||||
strings.TrimSpace(strings.TrimPrefix(msg.Content, "!available ")),
|
||||
time.Local,
|
||||
)
|
||||
if err == nil {
|
||||
pauses[msg.Sender] = t
|
||||
if _, err := db.Get(key); err == storage.ErrNotFound {
|
||||
t, err := time.ParseInLocation(
|
||||
"2006-01-02",
|
||||
strings.TrimSpace(strings.TrimPrefix(msg.Content, "!available ")),
|
||||
time.Local,
|
||||
)
|
||||
if err == nil {
|
||||
pauses[msg.Sender] = t
|
||||
}
|
||||
}
|
||||
if err := db.Set(key, []byte{'k'}); err != nil {
|
||||
log.Printf("failed to mark state gathered @%s: %v", key, err)
|
||||
}
|
||||
}
|
||||
setNewPauses(pauses)
|
||||
@@ -311,7 +326,7 @@ func sendJob(job broker.Job) error {
|
||||
}
|
||||
maps := config.Get().Maps
|
||||
if maps.Pickup {
|
||||
pickup := fmt.Sprintf("%s,%s", job.Pickup.City, job.Pickup.State)
|
||||
pickup := fmt.Sprintf("%s,%s", url.QueryEscape(job.Pickup.City), job.Pickup.State)
|
||||
uri := fmt.Sprintf(maps.URIFormat, pickup, pickup)
|
||||
log.Printf("sending pickup image: %s", uri)
|
||||
if err := sender.SendImage(uri); err != nil {
|
||||
@@ -319,7 +334,7 @@ func sendJob(job broker.Job) error {
|
||||
}
|
||||
}
|
||||
if maps.Dropoff {
|
||||
dropoff := fmt.Sprintf("%s,%s", job.Dropoff.City, job.Dropoff.State)
|
||||
dropoff := fmt.Sprintf("%s,%s", url.QueryEscape(job.Dropoff.City), job.Dropoff.State)
|
||||
uri := fmt.Sprintf(maps.URIFormat, dropoff, dropoff)
|
||||
log.Printf("sending dropoff image: %s", uri)
|
||||
if err := sender.SendImage(uri); err != nil {
|
||||
|
||||
@@ -119,6 +119,11 @@ func (m Matrix) SendImage(uri string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if response.StatusCode != http.StatusOK {
|
||||
b, _ := ioutil.ReadAll(response.Body)
|
||||
response.Body.Close()
|
||||
return fmt.Errorf("failed to get %s: (%d) %s", uri, response.StatusCode, b)
|
||||
}
|
||||
b, err := ioutil.ReadAll(response.Body)
|
||||
response.Body.Close()
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user