diff --git a/broker/job.go b/broker/job.go index 36ea769..5678184 100644 --- a/broker/job.go +++ b/broker/job.go @@ -16,6 +16,7 @@ type Job struct { Weight int Miles int Meta string + secrets func() interface{} `json:"-"` } type JobLocation struct { @@ -24,6 +25,18 @@ type JobLocation struct { State string } +func (j *Job) Secrets() { + if j.secrets == nil { + return + } + v := j.secrets() + j.secrets = nil + if v == nil { + return + } + j.Meta = fmt.Sprintf("%s %+v", j.Meta, v) +} + func (j Job) String() string { return fmt.Sprintf( `%s => %s (%d miles), Weight:%d, Notes:%s Link:%s`, diff --git a/broker/ntgvision.go b/broker/ntgvision.go index eeee3f4..2f63789 100644 --- a/broker/ntgvision.go +++ b/broker/ntgvision.go @@ -88,18 +88,7 @@ func (ntgJob *ntgVisionJob) jobInfo() (ntgVisionJobInfo, error) { 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 { +func (ntgJob *ntgVisionJob) Job() Job { pickup, _ := time.ParseInLocation("01/02/06", ntgJob.PickupDate, time.Local) dropoff, _ := time.ParseInLocation("01/02/06", ntgJob.DropoffDate, time.Local) return Job{ @@ -117,7 +106,15 @@ func (ntgJob *ntgVisionJob) job(jobInfo ntgVisionJobInfo) Job { }, Miles: ntgJob.Miles, Weight: ntgJob.Weight, - Meta: fmt.Sprintf("equipment:%s, secrets:%+v", ntgJob.Equipment, jobInfo), + Meta: fmt.Sprintf("equipment:%s", ntgJob.Equipment), + secrets: func() interface{} { + jobInfo, err := ntgJob.JobInfo() + if err != nil { + log.Printf("failed to get jobinfo: %v", err) + return nil + } + return jobInfo + }, } } @@ -151,7 +148,7 @@ func (ntg NTGVision) Search(states []config.State) ([]Job, error) { jobs := make([]Job, len(ntgjobs)) for i := range jobs { - jobs[i] = ntgjobs[i].Job(true) + jobs[i] = ntgjobs[i].Job() } return jobs, err }