public RootIpAddressLookup DoBulkIpLookup(List <string> ips, List <string> fieldsToUse)
        {
            var chunkedResults    = new List <RootIpAddressLookup>();
            var combinedIpResults = new List <IpAddressData>();
            var returnResults     = new RootIpAddressLookup();
            var rows           = ips.Count;
            var fullGroups     = Math.Truncate(rows / 100d);
            var remainingGroup = (rows % 100) > 0 ? 1 : 0;
            var totalGroups    = fullGroups + remainingGroup;

            if (ips.Count > 100)
            {
                var chunks = Split <string>(ips, 100);
                var x      = chunks;
                foreach (var chunkList in chunks)
                {
                    chunkedResults.Add(GetData(chunkList));
                }
                foreach (RootIpAddressLookup root in chunkedResults)
                {
                    var cList = root.IpAddressData;
                    combinedIpResults.AddRange(cList);
                }
                returnResults.IpAddressData = combinedIpResults;
            }
            else
            {
                returnResults = GetData(ips);
            }

            return(returnResults);
        }
예제 #2
0
        public void DoLookup()
        {
            dgIpResults.DataSource = null;
            txtIpOutput.Text       = "";
            var delimeter = "\t";
            var sList     = txtIpInput.Text.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();

            lblCountValue.Text = sList.Count.ToString();
            var repo = new IpAddressRepo();

            var hFields = IpApiHeaders.IpApiHeaderOptions;
            RootIpAddressLookup ipResults = repo.DoBulkIpLookup(sList, hFields);

            var headerList = "";
            var hCount     = hFields.Count;

            for (int i = 0; i < hFields.Count; i++)
            {
                var endDelimeter = "\t";
                var h            = hFields[i];
                if (i == hFields.Count - 1)
                {
                    endDelimeter = "\r\n";
                }
                headerList += string.Format("{0}{1}", StringUtils.HeaderTextForFieldName(h), endDelimeter);
                //YourDataGridView.Columns.Add(New DataGridViewColumn());
            }

            txtIpOutput.Text = string.Format("{0}", headerList);
            foreach (IpAddressData item in ipResults.IpAddressData)
            {
                var dnsRepo = new DnsQueryRepo();
                if (cbIncludeBlacklist.Checked)
                {
                    item.BlackList = dnsRepo.GetIndividualIpBlockedStatus(item.IpAddress);
                }

                txtIpOutput.Text += string.Format("{0}{13}{1}{13}{2}{13}{3}{13}{4}{13}{5}{13}{6}{13}{7}{13}{8}{13}{9}{13}{10}{13}{11}{13}{12}\r\n",
                                                  item.IpAddress,
                                                  item.Status,
                                                  item.Country,
                                                  item.RegionName,
                                                  item.City,
                                                  item.District,
                                                  item.Zipcode,
                                                  item.ISP,
                                                  item.Organization,
                                                  item.ASN,
                                                  item.Latitude,
                                                  item.Longitude,
                                                  item.BlackList,
                                                  delimeter
                                                  );
            }

            dgIpResults.RowsDefaultCellStyle.BackColor            = Color.Ivory;
            dgIpResults.AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue;
            dgIpResults.AutoGenerateColumns = true;
            dgIpResults.AutoResizeColumns();
            dgIpResults.DataSource = ipResults.IpAddressData;
        }