Everypolitician Build Status Gem Version

Interface with EveryPolitician data from your Ruby application.

Installation

Add this line to your application's Gemfile:

gem 'everypolitician'

And then execute:

$ bundle

Or install it yourself as:

$ gem install everypolitician

Usage

Pass the :slug of the country to the country method, and the :slug of the legislature to the legislature method.

Examples:

require 'everypolitician'

australia = Everypolitician::Index.new.country('Australia')
australia.code # => "AU"
senate = australia.legislature('Senate')
senate.popolo # => #<Everypolitician::Popolo::JSON>

united_kingdom = Everypolitician::Index.new.country('UK')
house_of_commons = united_kingdom.legislature('Commons')

american_samoa = Everypolitician::Index.new.country('American-Samoa')
house_of_representatives = american_samoa.legislature('House')

united_arab_emirates = Everypolitician::Index.new.country('United-Arab-Emirates')
national_council = united_arab_emirates.legislature('Federal-National-Council')

algeria = Everypolitician::Index.new.country('Algeria')
national_assembly = algeria.legislature('Majlis')

# Iterate though all known countries
Everypolitician::Index.new.countries.each do |country|
  puts "#{country.name} has #{country.legislatures.size} legislature(s)"
end

# Iterate through all known legislatures
Everypolitician::Index.new.all_legislatures.each do |legislature|
  puts "#{legislature.name} in #{legislature.country.name} has #{legislature.person_count} member(s)"
end

# Fetch Everypolitician::Popolo::LegislativePeriod for the latest term
# Note that this may involve a **substantial download**
puts 'Members of the Assembly:'
assembly = Everypolitician::Index.new.country('Albania').lower_house
assembly.latest_term.memberships.map(&:person).uniq(&:id).each do |person|
  puts person.name
end

By default, the gem connects to EveryPolitician's data on GitHub over HTTPS and returns the most recent data. Specifically it uses the current index file, called countries.json, which itself contains links to specific versions of data files.

If you want to point at a different countries.json, you can override this default behavour by supplying an index_url option to Everypolitician::Index.new like this:

Everypolitician::Index.new(index_url: 'https://cdn.rawgit.com/everypolitician/everypolitician-data/080cb46/countries.json')

The example above is using a specific commit (indicated by the hash 080cb46). If you want to use a local copy of countries.json you can specify a local file path as the index_url instead of a fully-qualified URL.

For more about countries.json, see this description.

Remember that EveryPolitician data is frequently updated — see this information about using EveryPolitician data.

More information on the EveryPolitician site.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/everypolitician/everypolitician.

License

The gem is available as open source under the terms of the MIT License.