Class: OpenFec::Resources::Candidates

Inherits:
Base
  • Object
show all
Defined in:
lib/open_fec/resources/candidates.rb

Overview

Search and retrieve FEC candidate records.

Examples:

Search by name

OpenFec.candidates.search(name: 'Pelosi', state: 'CA')

Get a candidate with their principal committees

candidate = OpenFec.candidates.find('H8CA05035')
committee_id = candidate.results.first.dig('principal_committees', 0, 'committee_id')

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from OpenFec::Resources::Base

Instance Method Details

#committees(candidate_id, **params) ⇒ OpenFec::Response

List committees associated with a candidate.

Parameters:

  • candidate_id (String)

    FEC candidate ID

  • params (Hash)

    optional filters (:designation, :organization_type, etc.)

Returns:



36
37
38
# File 'lib/open_fec/resources/candidates.rb', line 36

def committees(candidate_id, **params)
  get("candidate/#{candidate_id}/committees/", params)
end

#each_page(**params) {|OpenFec::Response| ... } ⇒ Object

Paginate through candidate search results (offset-based).

Parameters:

  • params (Hash)

    search filters

Yields:



44
45
46
# File 'lib/open_fec/resources/candidates.rb', line 44

def each_page(**params, &)
  client.paginate('candidates/search/', params, &)
end

#find(candidate_id) ⇒ OpenFec::Response

Fetch a single candidate by FEC candidate ID. Includes principal_committees in the response.

Parameters:

  • candidate_id (String)

    FEC candidate ID (e.g. “H8CA05035”)

Returns:



27
28
29
# File 'lib/open_fec/resources/candidates.rb', line 27

def find(candidate_id)
  get("candidate/#{candidate_id}/")
end

#search(**params) ⇒ OpenFec::Response

Search for candidates by name, state, district, party, etc.

Parameters:

  • params (Hash)

    search filters (:name, :state, :district, :party, :office, etc.)

Returns:



18
19
20
# File 'lib/open_fec/resources/candidates.rb', line 18

def search(**params)
  get('candidates/search/', params)
end