public void ExceedLimitAndRecover()
        {
            ExceedRateLimit();

            var querier = new MfgBom.OctoPart.Querier(API_KEY);
            var part = new MfgBom.Bom.Part()
            {
                octopart_mpn = "SN74S74N"
            };
            Assert.True(part.QueryOctopartData(API_KEY));
        }
Esempio n. 2
0
        public void QueryAndParse_ManyMPNs()
        {
            var listMpn = new List <String>()
            {
                "SN74S74N",
                "ERJ-2GE0R00X",
                "2-406549-1",
                "CRCW06031K00FKEA",
                "SMD100F-2",
                "TDGL002",
                "ATMEGA48-20AU"
            };

            var dictFailures = new Dictionary <String, Exception>();

            foreach (var mpn in listMpn)
            {
                var part = new MfgBom.Bom.Part()
                {
                    octopart_mpn = mpn
                };

                try
                {
                    part.QueryOctopartData();
                }
                catch (Exception ex)
                {
                    dictFailures.Add(mpn, ex);
                }
            }

            if (dictFailures.Any())
            {
                var msg = String.Format("Exception(s) encountered when processing {0} MPN(s):" + Environment.NewLine,
                                        dictFailures.Count);

                foreach (var kvp in dictFailures)
                {
                    msg += kvp.Key + ": " + kvp.Value + Environment.NewLine + Environment.NewLine;
                }

                Assert.False(dictFailures.Any(), msg);
            }
        }
Esempio n. 3
0
        public bool GetOctoPartData(CyPhy.Component component)
        {
            try
            {
                var part = new MfgBom.Bom.Part();
                part.octopart_mpn = GetDeviceNameFromComponentEDAModel(component);
                if (string.IsNullOrWhiteSpace(part.octopart_mpn))
                {
                    return(false);
                }

                var desiredData = new List <string>()
                {
                    "category_uids",
                    "imagesets",
                    "datasheets",
                    "specs"
                };

                part.QueryOctopartData(exact_only: true, includes: desiredData, grab_first: false);

                if (!part.valid_mpn)
                {
                    LogMessage(String.Format("OctoPart MPN number {0} was not found in database", part.octopart_mpn),
                               CyPhyGUIs.SmartLogger.MessageType_enum.Error);
                    return(false);
                }
                if (part.too_broad_mpn)
                {
                    LogMessage(String.Format("OctoPart MPN number {0} returned more than one possible match.", part.octopart_mpn),
                               CyPhyGUIs.SmartLogger.MessageType_enum.Error);
                    return(false);
                }

                // Add property for OctoPart MPN
                BuildCyPhyProperty(component, "octopart_mpn", part.octopart_mpn,
                                   CyPhyClasses.Property.AttributesClass.DataType_enum.String, false);

                // Add property for all details returned by specs
                if (String.IsNullOrWhiteSpace(part.TechnicalSpecifications))
                {
                    LogMessage(String.Format("No technical details provided for OctoPart MPN number {0}.", part.octopart_mpn),
                               CyPhyGUIs.SmartLogger.MessageType_enum.Warning);
                }
                else
                {
                    AddOctoPartTechSpecsToComponent(component, part);
                }

                // Add classification from category UIDs
                if (String.IsNullOrWhiteSpace(part.CategoryUID))
                {
                    LogMessage(String.Format("No Category UID/Classification for OctoPart MPN number {0}.", part.octopart_mpn),
                               CyPhyGUIs.SmartLogger.MessageType_enum.Warning);
                }
                else
                {
                    AddOctoPartClassificationToComponent(component, part);
                }

                // Add icon image (need to download)
                if (String.IsNullOrWhiteSpace(part.Icon))
                {
                    LogMessage(String.Format("No Icon was provided for OctoPart MPN number {0}.", part.octopart_mpn),
                               CyPhyGUIs.SmartLogger.MessageType_enum.Warning);
                }
                else
                {
                    AddOctoPartIconToComponent(component, part);
                }

                // Add datasheet documentation.
                if (String.IsNullOrWhiteSpace(part.Datasheet))
                {
                    LogMessage(String.Format("No datasheet was provided for OctoPart MPN number {0}.", part.octopart_mpn),
                               CyPhyGUIs.SmartLogger.MessageType_enum.Warning);
                }
                else
                {
                    AddOctoPartDatasheetToComponent(component, part);
                }

                LogMessage("OctoPart importer completed.", CyPhyGUIs.SmartLogger.MessageType_enum.Success);
                return(true);
            }
            catch (OctoPart.OctopartQueryException ex)
            {
                LogMessage("Error: " + ex.Message, CyPhyGUIs.SmartLogger.MessageType_enum.Error);
                return(false);
            }
            finally
            {
                clean_up(true);
            }
        }
        public void QueryAndParse_ManyMPNs()
        {
            var listMpn = new List<String>()
            {
                "SN74S74N",
                "ERJ-2GE0R00X",
                "2-406549-1",
                "CRCW06031K00FKEA",
                "SMD100F-2",
                "TDGL002",
                "ATMEGA48-20AU"
            };

            var dictFailures = new Dictionary<String, Exception>();

            foreach (var mpn in listMpn)
            {
                var part = new MfgBom.Bom.Part()
                {
                    octopart_mpn = mpn
                };

                try
                {
                    part.QueryOctopartData();
                }
                catch (Exception ex)
                {
                    dictFailures.Add(mpn, ex);
                }
            }

            if (dictFailures.Any())
            {
                var msg = String.Format("Exception(s) encountered when processing {0} MPN(s):" + Environment.NewLine, 
                                        dictFailures.Count);

                foreach (var kvp in dictFailures)
                {
                    msg += kvp.Key + ": " + kvp.Value + Environment.NewLine + Environment.NewLine;
                }

                Assert.False(dictFailures.Any(), msg);
            }
        }