Skip to content

Commit d9200a0

Browse files
committed
further code re-factoring
1 parent 3557617 commit d9200a0

1 file changed

Lines changed: 58 additions & 53 deletions

File tree

daemon.go

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package main
33
import (
44
"bytes"
55
"encoding/json"
6-
"errors"
76
"fmt"
87
"io"
98
"log"
@@ -51,7 +50,7 @@ func syncWorker(syncRecord map[string]any) error {
5150
if val, ok := syncRecord["uuid"]; ok {
5251
suuid = fmt.Sprintf("%s", val)
5352
} else {
54-
return errors.New(fmt.Sprintf("Unable to obtain UUID of sync record %+v", syncRecord))
53+
return fmt.Errorf("Unable to obtain UUID of sync record %+v", syncRecord)
5554
}
5655
if err := updateMetadataRecords(syncRecord); err != nil {
5756
return err
@@ -82,67 +81,73 @@ func syncWorker(syncRecord map[string]any) error {
8281
return nil
8382
}
8483

84+
// helper function to update provenance records
8585
func updateProvenanceRecords(syncRecord map[string]any) error {
86-
// obtain all FOXDEN provenance records from source FOXDEN instance
87-
// send PUT request to target FOXDEN instance with all provenance records
88-
if surl, ok := syncRecord["source_url"]; ok {
89-
spec := make(map[string]any)
90-
rurl := fmt.Sprintf("%s/provenance", surl)
91-
rec := services.ServiceRequest{
92-
Client: "foxden-sync",
93-
ServiceQuery: services.ServiceQuery{Spec: spec},
94-
}
95-
data, err := json.Marshal(rec)
96-
if err != nil {
97-
return err
98-
}
99-
resp, err := _httpReadRequest.Post(rurl, "application/json", bytes.NewBuffer(data))
100-
if err != nil {
101-
return err
102-
}
103-
defer resp.Body.Close()
104-
data, err = io.ReadAll(resp.Body)
105-
if err != nil {
106-
return err
107-
}
108-
var records []map[string]any
109-
err = json.Unmarshal(data, &records)
110-
if err != nil {
111-
return err
112-
}
113-
}
114-
return nil
86+
return updateRecords("provenance", syncRecord)
11587
}
11688

89+
// helper function to update metadata records
11790
func updateMetadataRecords(syncRecord map[string]any) error {
118-
// obtain all FOXDEN metadata records from source FOXDEN instance
119-
if surl, ok := syncRecord["source_url"]; ok {
120-
spec := make(map[string]any)
121-
rurl := fmt.Sprintf("%s/search", surl)
122-
rec := services.ServiceRequest{
123-
Client: "foxden-sync",
124-
ServiceQuery: services.ServiceQuery{Spec: spec},
125-
}
126-
data, err := json.Marshal(rec)
127-
if err != nil {
128-
return err
129-
}
130-
resp, err := _httpReadRequest.Post(rurl, "application/json", bytes.NewBuffer(data))
131-
if err != nil {
132-
return err
133-
}
134-
defer resp.Body.Close()
135-
data, err = io.ReadAll(resp.Body)
91+
return updateRecords("metadata", syncRecord)
92+
}
93+
94+
// helper function to update records in FOXDEN
95+
func updateRecords(srv string, syncRecord map[string]any) error {
96+
var records []map[string]any
97+
var err error
98+
// obtain all FOXDEN records from source FOXDEN instance
99+
if val, ok := syncRecord["source_url"]; ok {
100+
surl := fmt.Sprintf("%s", val)
101+
records, err = getRecords(srv, surl)
136102
if err != nil {
137103
return err
138104
}
139-
var records []map[string]any
140-
err = json.Unmarshal(data, &records)
105+
}
106+
// send PUT request to target FOXDEN isntance with all metadata records
107+
if val, ok := syncRecord["target_url"]; ok {
108+
turl := fmt.Sprintf("%s", val)
109+
err := pushRecords(srv, turl, records)
141110
if err != nil {
142111
return err
143112
}
144113
}
145-
// send PUT request to target FOXDEN isntance with all metadata records
146-
// update sync record with SyncMetadata status code
147114
return nil
148115
}
116+
117+
// helper function to push FOXDEN records to upstream target url
118+
func pushRecords(srv, turl string, records []map[string]any) error {
119+
log.Println(srv, turl, records)
120+
return nil
121+
}
122+
123+
// helper function to get records from given FOXDEN instance
124+
func getRecords(srv, surl string) ([]map[string]any, error) {
125+
var records []map[string]any
126+
spec := make(map[string]any)
127+
rurl := fmt.Sprintf("%s/search", surl)
128+
if srv == "provenance" {
129+
rurl = fmt.Sprintf("%s/provenance", surl)
130+
}
131+
rec := services.ServiceRequest{
132+
Client: "foxden-sync",
133+
ServiceQuery: services.ServiceQuery{Spec: spec},
134+
}
135+
data, err := json.Marshal(rec)
136+
if err != nil {
137+
return records, err
138+
}
139+
resp, err := _httpReadRequest.Post(rurl, "application/json", bytes.NewBuffer(data))
140+
if err != nil {
141+
return records, err
142+
}
143+
defer resp.Body.Close()
144+
data, err = io.ReadAll(resp.Body)
145+
if err != nil {
146+
return records, err
147+
}
148+
err = json.Unmarshal(data, &records)
149+
if err != nil {
150+
return records, err
151+
}
152+
return records, nil
153+
}

0 commit comments

Comments
 (0)