Include snapshot
diff --git a/apigee_sync.go b/apigee_sync.go index 25ac6a1..e3466e3 100644 --- a/apigee_sync.go +++ b/apigee_sync.go
@@ -220,3 +220,61 @@ TokenExpIn int64 `json:"refreshTokenExpiresIn"` RefreshCount int64 `json:"refreshCount"` } + +func Redirect(req *http.Request, via []*http.Request) error { + req.Header.Add("Authorization", "Bearer "+token) + req.Header.Add("org", config.GetString(configOrganization)) + return nil +} + +func downloadSnapshot() error { + + org := config.GetString(configOrganization) + status := getTokenForOrg(org) + if status == false { + return errors.New("Unable to get new token") + } + snapshotUri, err := url.Parse(config.GetString(configProxyServerBaseURI)) + if err != nil { + log.Errorf("bad url value for config %s: %s", configProxyServerBaseURI, err) + return err + } + snapshotUri.Path = path.Join(snapshotUri.Path, "/v1/edgex/snapshots?org") + + v := url.Values{} + v.Add("tag", org) + snapshotUri.RawQuery = v.Encode() + uri := snapshotUri.String() + log.Info("Snapshot Download : ", uri) + + client := &http.Client{ + CheckRedirect: Redirect, + } + req, err := http.NewRequest("GET", uri, nil) + req.Header.Add("Authorization", "Bearer "+token) + resp, err := client.Do(req) + if err != nil { + log.Error("API Proxy comm error: [%s] ", err) + return err + } + defer resp.Body.Close() + if resp.StatusCode == 200 { + rawjson, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Error("Snapshot response read error: [%s] ", err) + return err + } + + err = data.InsertSnapshotDB(rawjson) + if err != nil { + log.Error("Insert Snapshot error: [%s] ", err) + return err + } + + log.Info("Got a new DB from Snapshot server") + return err + } + log.Info("Snapshot server Connect failed. Resp code %d", resp.StatusCode) + return err + +}
diff --git a/init.go b/init.go index 767bdfd..e24acd4 100644 --- a/init.go +++ b/init.go
@@ -43,6 +43,12 @@ } } + err := downloadSnapshot() + if err != nil { + log.Error("Unable to download snapshot") + return nil + } + log.Debug("starting update goroutine") go updatePeriodicChanges()