Exemple #1
0
        static void Main(string[] args)
        {
            EdgarSearch          es   = EdgarSearch.CreateAsync(args[0], "10-K").Result;
            EdgarSearchResult    esr  = es.GetFirstResultOfFilingType("10-K");
            Stream               s    = esr.DownloadXbrlDocumentAsync().Result;
            XbrlInstanceDocument doc  = XbrlInstanceDocument.Create(s);
            FinancialStatement   fs   = doc.CreateFinancialStatement();
            string               json = JsonConvert.SerializeObject(fs);

            Console.WriteLine(json);
        }
        /// <summary>
        /// This will scan the newly filed Form 4's and return the ones that are new (have not been seen yet). Thus, this will mark the new ones as observed.
        /// </summary>
        public async Task <StatementOfBeneficialOwnership[]> ObserveNewForm4sAsync()
        {
            //Get the last observed filing URL
            string LastObservedFilingUrl = await DownloadLatestObservedForm4FilingUrlAsync();

            //Search!
            EdgarLatestFilingsSearch elfs = await EdgarLatestFilingsSearch.SearchAsync("4", EdgarSearchOwnershipFilter.only, EdgarSearchResultsPerPage.Entries40);

            //Get a list of new filings
            List <EdgarLatestFilingResult> NewlyObservedFilings = new List <EdgarLatestFilingResult>();

            if (LastObservedFilingUrl != null)
            {
                foreach (EdgarLatestFilingResult esr in elfs.Results)
                {
                    if (LastObservedFilingUrl == esr.DocumentsUrl)
                    {
                        break;
                    }
                    else
                    {
                        NewlyObservedFilings.Add(esr);
                    }
                }
            }
            else //If there isn't a latest received filings url in azure, just add all of them
            {
                foreach (EdgarLatestFilingResult esr in elfs.Results)
                {
                    NewlyObservedFilings.Add(esr);
                }
            }

            //Get a list of statmenet of changes in beneficial ownership for each of them
            List <StatementOfBeneficialOwnership> ToReturn = new List <StatementOfBeneficialOwnership>();

            foreach (EdgarLatestFilingResult esr in NewlyObservedFilings)
            {
                EdgarSearchResult esrt = new EdgarSearchResult();
                esrt.DocumentsUrl = esr.DocumentsUrl; //Have to plug it into here because this is the only class has has the GetDocumentFormatFilesAsync method
                FilingDocument[] docs = await esrt.GetDocumentFormatFilesAsync();

                foreach (FilingDocument fd in docs)
                {
                    if (fd.DocumentName.ToLower().Contains(".xml") && fd.DocumentType == "4")
                    {
                        try
                        {
                            StatementOfBeneficialOwnership form4 = await StatementOfBeneficialOwnership.ParseXmlFromWebUrlAsync(fd.Url);

                            ToReturn.Add(form4);
                        }
                        catch
                        {
                        }
                    }
                }
            }

            //Log the most recent seen form 4 (it would just be the first one in the list of results)
            await UploadLatestObservedForm4FilingUrlAsync(elfs.Results[0].DocumentsUrl);

            //Return
            return(ToReturn.ToArray());
        }