public async Task <dynamic> Get(string companyName) { if (CheckClientSecret()) { try { using (HttpClient client = new HttpClient()) using (Entities db = new Entities()) { CompanyRoot.Company company = await CompanySearch.GetCompany(client, companyName, db); EngagementsRoot engagementsRoot = await EngagementsSearch.GetEngagements(client, companyName, db, company.Results.FirstOrDefault().Id); List <EngagementsDTO> allEngagementsDTO = new List <EngagementsDTO>(); for (int i = 0; i < engagementsRoot.Results.Count; i++) { allEngagementsDTO.Add(new EngagementsDTO(engagementsRoot.Results[i])); } return(allEngagementsDTO); } } catch (Exception ex) { return(ex); } } else { return(new HttpResponseMessage(HttpStatusCode.Forbidden)); } }
public static async Task <dynamic> GetEngagements(HttpClient client, string companyName, Entities db, string companyID) { string alias; try { alias = AliasMethods.GetAlias(companyName, db, "HubSpot"); } catch { return(new ArgumentException($"No HubSpot alias found for the company name {companyName}")); } string uri = $"https://api.hubapi.com/engagements/v1/engagements/associated/COMPANY/{companyID}/paged?limit=100&hapikey=" + ConfigDictionary.Config()["HubSpotAPIKey"]; try { HttpResponseMessage response = await client.GetAsync(uri); string responseData = await response.Content.ReadAsStringAsync(); EngagementsRoot engagementsData = JsonConvert.DeserializeObject <EngagementsRoot>(responseData); while (engagementsData.HasMore) { engagementsData = await ChainedEngagementsRequest(engagementsData, companyID, client); } return(engagementsData); } catch (HttpRequestException ex) { return(ex); } }
public static async Task <EngagementsRoot> ChainedEngagementsRequest(EngagementsRoot engagementsData, string companyID, HttpClient client) { string uri = $"https://api.hubapi.com/engagements/v1/engagements/associated/COMPANY/{companyID}/paged?limit=100&offset={engagementsData.Offset}&hapikey=" + ConfigDictionary.Config()["HubSpotAPIKey"]; HttpResponseMessage response = await client.GetAsync(uri); string responseData = await response.Content.ReadAsStringAsync(); engagementsData = JsonConvert.DeserializeObject <EngagementsRoot>(responseData); return(engagementsData); }