aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--b1gfoot29
-rw-r--r--octopart.go48
2 files changed, 77 insertions, 0 deletions
diff --git a/b1gfoot b/b1gfoot
new file mode 100644
index 0000000..ebe49f4
--- /dev/null
+++ b/b1gfoot
@@ -0,0 +1,29 @@
+ _ _ __ _
+| |__ / | __ _ / _| ___ ___ | |_
+| '_ \| |/ _` | |_ / _ \ / _ \| __|
+| |_) | | (_| | _| (_) | (_) | |_
+|_.__/|_|\__, |_| \___/ \___/ \__|
+ |___/
+
+electronics CAD symbol+footprint management tools and repository server.
+
+vaporware/proposal, no actual code
+
+### Basic Features
+
+- imports/exports Eagle XML, KiCad, and gEDA formats
+- search/query interface
+- basic component categorization ontology
+- "smart" pattern matching and mapping to standard symbols/footprints
+- complete JEDEC library
+- render to PNG and SVG
+- HTTP JSON and XML API for easy application interfacing
+
+### Extra Features
+
+- wiki-like interface for communal editing of info
+- other (ISO?) sybol/footprint/package ontologies
+- import/export Orcad, Altium, etc
+- render to PDF
+- scrape symbols and pinouts datasheet pdfs (at least some manufacturers?)
+- synchronization between repositories (local/remote)
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) {
+
+}