aboutsummaryrefslogtreecommitdiffstats
path: root/octopart.go
diff options
context:
space:
mode:
Diffstat (limited to 'octopart.go')
-rw-r--r--octopart.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/octopart.go b/octopart.go
new file mode 100644
index 0000000..a1f14df
--- /dev/null
+++ b/octopart.go
@@ -0,0 +1,48 @@
+package main
+
+import (
+ "net/http"
+)
+
+/*
+Routines to make (cached) API calls to Octopart and merge results into BOM
+LineItems.
+*/
+
+var pricingSource *OctopartClient
+
+type OctopartClient struct {
+ ApiKey string
+ RemoteHost string
+ client *http.Client
+}
+
+func NewOctopartClient(apikey string) *OctopartClient {
+ oc := &OctopartClient{ApiKey: apikey,
+ RemoteHost: "https://www.octopart.com"}
+ oc.client = &http.Client{}
+ return oc
+}
+
+func openPricingSource() {
+ pricingSource = NewOctopartClient("")
+}
+
+func (*oc OctopartClient) apiCall(method string, params map[string]string) (map[string]interface, error) {
+ paramString := "?apikey=" + oc.ApiKey
+ for key := range params {
+ paramString += "&" + key + "=" + params[key]
+ }
+ resp, err := oc.client.Get(oc.RemoteHost + "/api/v2/" + method)
+
+ // resp as json, or interpret as error
+ return
+}
+
+func (*oc OctopartClient) GetMarketInfo(mpn, manufacturer string) (map[string]interface, error) {
+
+}
+
+func (*oc OctopartClient) GetPricing(method string, params map[string]string) (map[string]interface, error) {
+
+}