aboutsummaryrefslogtreecommitdiffstats
path: root/octopart.go
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2012-05-15 15:47:17 -0400
committerbnewbold <bnewbold@robocracy.org>2012-05-15 15:47:17 -0400
commite8b87ff1746d7aaa7cd5915e34b3a016b285750f (patch)
tree2f9a6fd0720b0e003e647d9d57fdd3e5fb4b0a4e /octopart.go
parent1a8a469233e95c9474d911c352cc86d5b9e8e709 (diff)
downloadbommom-e8b87ff1746d7aaa7cd5915e34b3a016b285750f.tar.gz
bommom-e8b87ff1746d7aaa7cd5915e34b3a016b285750f.zip
wip: b1gfoot notes, octopart startwip
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) {
+
+}