From e8b87ff1746d7aaa7cd5915e34b3a016b285750f Mon Sep 17 00:00:00 2001 From: bnewbold Date: Tue, 15 May 2012 15:47:17 -0400 Subject: wip: b1gfoot notes, octopart start --- b1gfoot | 29 +++++++++++++++++++++++++++++ octopart.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 b1gfoot create mode 100644 octopart.go 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) { + +} -- cgit v1.2.3