public async Task <IReadOnlyCollection <Contracts.CurrentMember> > GetCurrentMembersAsync(Chamber chamber, string state, int?district = null) { if (chamber == Chamber.Unknown) { throw new ArgumentException("Chamber must be 'House' or 'Senate'."); } if (String.IsNullOrWhiteSpace(state)) { throw new ArgumentNullException("state", "State is required."); } string url = apiBaseUrl; if (district.HasValue) { url += String.Format(currentHouseMembersUrl, chamber.ToString().ToLower(), state, district); } else { url += String.Format(currentMembersUrl, chamber.ToString().ToLower(), state); } var internalModel = await GetMultipleResultDataAsync <InternalModels.CurrentMember>(url); var contract = AutoMapperConfiguration.Mapper.Map <IReadOnlyCollection <InternalModels.CurrentMember>, IReadOnlyCollection <Contracts.CurrentMember> >(internalModel.Results); return(contract); }
public async Task <Contracts.CommitteesContainer> GetCommitttees(int congress, Chamber chamber) { string url = apiBaseUrl + String.Format(committeesUrl, congress, chamber.ToString().ToLower()); var internalModel = await GetMultipleResultDataAsync <InternalModels.CommitteesContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.CommitteesContainer, Contracts.CommitteesContainer>(internalModel.Results.ElementAt(0)); return(contract); }
public async Task <Contracts.SpecificCommittee> GetSpecificCommittee(int congress, Chamber chamber, string committeeId) { string url = apiBaseUrl + String.Format(specificCommitteeUrl, congress, chamber.ToString().ToLower(), committeeId); var internalModel = await GetMultipleResultDataAsync <InternalModels.SpecificCommittee>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.SpecificCommittee, Contracts.SpecificCommittee>(internalModel.Results.ElementAt(0)); return(contract); }
public async Task <Contracts.RollCallVote> GetSpecificRollCallVote(int congress, Chamber chamber, Session session, int rollCallNumber) { string url = apiBaseUrl + String.Format(voteRollCallUrl, congress, chamber.ToString().ToLower(), (int)session, rollCallNumber); var internalModel = await GetSingleResultDataAsync <InternalModels.RollCallVotesContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.RollCallVotesContainer, Contracts.RollCallVotesContainer>(internalModel.Results); return(contract.Votes.Vote); }
public async Task <Contracts.VoteByTypeContainer> GetVotesByType(int congress, Chamber chamber, VoteAggregateCategory voteType) { string url = apiBaseUrl + String.Format(votesByTypeUrl, congress, chamber.ToString().ToLower(), voteType.ToString().ToLower()); var internalModel = await GetMultipleResultDataAsync <InternalModels.VoteByTypeContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.VoteByTypeContainer, Contracts.VoteByTypeContainer>(internalModel.Results.ElementAt(0)); return(contract); }
public async Task <Contracts.VoteByDateContainer> GetVotesByDate(Chamber chamber, int year, int month) { string url = apiBaseUrl + String.Format(votesByDateUrl, chamber.ToString().ToLower(), year, month); var internalModel = await GetSingleResultDataAsync <InternalModels.VoteByDateContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.VoteByDateContainer, Contracts.VoteByDateContainer>(internalModel.Results); return(contract); }
/// <summary> /// Returns a collection of members in whatever Congress and Chamber (House or Senate) is passed as parameters. Use the MemberUrl in the response to get more details about a specific member. /// </summary> /// <param name="congress">Number of Congress to query (ie. 2017 is the 115th Congress).</param> /// <param name="chamber">Chamber of Congress such as "house" or "senate".</param> /// <returns></returns> public async Task <Contracts.MembersContainer> GetMembersAsync(int congress, Chamber chamber) { if (chamber == Chamber.Unknown) { throw new ArgumentException("Chamber must be 'House' or 'Senate'."); } string url = apiBaseUrl + String.Format(membersUrl, congress, chamber.ToString().ToLower()); var internalModel = await GetMultipleResultDataAsync <InternalModels.MembersContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map <InternalModels.MembersContainer, Contracts.MembersContainer>(internalModel.Results.ElementAt(0)); return(contract); }
public async Task <Contracts.RecentBillsContainer> GetRecentBills(int congress, Chamber chamber, RecentBillType billType, int?offset = null) { string url = apiBaseUrl + String.Format(recentBillsUrl, congress, chamber.ToString().ToLower(), billType.ToString().ToLower()); // we can offset the results to page through them since this endpoint only returns 20 at a time if (offset.HasValue && offset.Value > 0) { url += String.Format(offsetParameter, offset.Value); } var internalModel = await GetMultipleResultDataAsync <InternalModels.RecentBillsContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.RecentBillsContainer, Contracts.RecentBillsContainer>(internalModel.Results.ElementAt(0)); return(contract); }
public async Task <IReadOnlyCollection <MemberVoteComparison> > CompareMemberVotes(string firstMemberId, string secondMemberId, int congress, Chamber chamber) { if (String.IsNullOrWhiteSpace(firstMemberId)) { throw new ArgumentNullException("firstMemberId", "First Member ID is required."); } if (String.IsNullOrWhiteSpace(secondMemberId)) { throw new ArgumentNullException("secondMemberId", "Second Member ID is required."); } string url = apiBaseUrl + String.Format(compareMemberVotesUrl, firstMemberId, secondMemberId, congress, chamber.ToString().ToLower()); var internalModel = await GetMultipleResultDataAsync <InternalModels.MemberVoteComparison>(url); var contract = AutoMapperConfiguration.Mapper.Map <IReadOnlyCollection <InternalModels.MemberVoteComparison>, IReadOnlyCollection <Contracts.MemberVoteComparison> > (internalModel.Results); return(contract); }
public async Task <Contracts.MemberBillSponsorshipComparisonContainer> CompareMemberBillSponsorships(string firstMemberId, string secondMemberId, int congress, Chamber chamber) { if (String.IsNullOrWhiteSpace(firstMemberId)) { throw new ArgumentNullException("firstMemberId", "First Member ID is required."); } if (String.IsNullOrWhiteSpace(secondMemberId)) { throw new ArgumentNullException("secondMemberId", "Second Member ID is required."); } string url = apiBaseUrl + String.Format(compareMemberBillSponsorshipsUrl, firstMemberId, secondMemberId, congress, chamber.ToString().ToLower()); var internalModel = await GetMultipleResultDataAsync <InternalModels.MemberBillSponsorshipComparisonContainer>(url); var contract = AutoMapperConfiguration.Mapper.Map < InternalModels.MemberBillSponsorshipComparisonContainer, Contracts.MemberBillSponsorshipComparisonContainer>(internalModel.Results.ElementAt(0)); return(contract); }