OpenCongressAPI 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in opencongress_api.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,56 @@
1
+ module OpenCongressApi
2
+ class Collection < Array
3
+ attr_accessor :page_size, :total_results
4
+ attr_writer :current_page
5
+
6
+ def self.build(response)
7
+ collection = Collection.new
8
+
9
+ # Setup the attributes needed for WillPaginate style paging
10
+ #request_url = response['meta']['url']
11
+ #request_parameters = parse_parameters_from_url(request_url)
12
+ #collection.page_size = request_parameters['page'] ? request_parameters['page'].to_i : nil
13
+ #collection.total_results = response['meta']['total_count'].to_i
14
+ #collection.current_page = request_parameters['offset'] ? (request_parameters['offset'].to_i + 1) : 1
15
+
16
+ # Load the collection with all
17
+ # of the results we passed in
18
+ response.each do |result|
19
+ collection << result
20
+ end
21
+ collection
22
+ end
23
+
24
+ # = WillPaginate Helper Methods
25
+ # These methods are implementded so that
26
+ # you may pass this collection to the will_paginate
27
+ # view helper to render pagination links.
28
+ def current_page
29
+ @current_page
30
+ end
31
+
32
+ def total_pages
33
+ @page_size ? (@total_results.to_f / @page_size.to_f).ceil : 1
34
+ end
35
+
36
+ def previous_page
37
+ self.current_page == 1 ? nil : self.current_page.to_i-1
38
+ end
39
+
40
+ def next_page
41
+ self.current_page == self.total_pages ? nil : self.current_page.to_i+1
42
+ end
43
+
44
+ protected
45
+ def self.parse_parameters_from_url(url)
46
+ query = URI.parse(url).query
47
+ parameters = {}
48
+
49
+ query.split("&").each do |kv|
50
+ kv = kv.split("=")
51
+ parameters[kv[0]] = kv[1]
52
+ end
53
+ parameters
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,87 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'json'
4
+
5
+ module OpenCongressApi
6
+ module Fetcher
7
+ def initialize(error_message, request_url)
8
+ super "OpenCongress API Error: #{error_message}"
9
+ end
10
+ end
11
+
12
+ class NoResponseError < StandardError
13
+ def initialize
14
+ super "No response was returned from OpenCongress"
15
+ end
16
+ end
17
+
18
+ class Base
19
+ def initialize
20
+ @type = nil
21
+ end
22
+
23
+ # Fetch and parse a response
24
+ # based on a set of options
25
+ # Override this method to ensure
26
+ # necessary options are passed
27
+ # for the request
28
+ def fetch(options = {})
29
+ url = build_url(options)
30
+ puts "Getting #{url}"
31
+
32
+ json = get_response(url)
33
+
34
+ if self.is_json?
35
+ data = JSON.parse(json)
36
+ else
37
+ data = XmlSimple.xml_in(json)
38
+ end
39
+
40
+ # TODO: Raise hell if there is a problem
41
+
42
+ collection = OpenCongressApi::Collection.build(json_result(data))
43
+ collection.map!{|result| format_result(result)}
44
+ end
45
+
46
+ protected
47
+
48
+ def format_result(result)
49
+ result
50
+ end
51
+
52
+ def json_result(json)
53
+ json
54
+ end
55
+
56
+ def build_url(options)
57
+ options = encode_options(options)
58
+ base_url + params_for(options)
59
+ end
60
+
61
+ def base_url
62
+ "http://api.opencongress.org/#{@type}"
63
+ end
64
+
65
+ def params_for(options)
66
+ params = (self.is_json?) ? ["json=true"] : []
67
+ options.each do |key, value|
68
+ params << "#{key}=#{value}"
69
+ end
70
+ "?#{params.join("&")}"
71
+ end
72
+
73
+ def encode_options(options)
74
+ options.each do |key, value|
75
+ options[key] = URI.encode(value.to_s)
76
+ end
77
+ end
78
+
79
+ def get_response(url)
80
+ Net::HTTP.get_response(URI.parse(url)).body || raise(NoResponseError.new)
81
+ end
82
+
83
+ def is_json?
84
+ true
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,63 @@
1
+ module OpenCongressApi
2
+ module Fetcher
3
+ class Bills < Base
4
+ def initialize
5
+ @type = :bills
6
+ end
7
+
8
+ def format_result(result)
9
+ OpenCongressApi::Type::Bill.new(result)
10
+ end
11
+
12
+ def json_result(json)
13
+ json['bill']
14
+ end
15
+
16
+ def is_json?
17
+ false
18
+ end
19
+ end
20
+
21
+ class HotBills < Bills
22
+ def initialize
23
+ @type = :hot_bills
24
+ end
25
+ end
26
+
27
+ class MostBloggedBills < Bills
28
+ def initialize
29
+ @type = :most_blogged_bills_this_week
30
+ end
31
+ end
32
+
33
+ class NewsworthyBills < Bills
34
+ def initialize
35
+ @type = :bills_in_the_news_this_week
36
+ end
37
+ end
38
+
39
+ class MostCommentedBills < Bills
40
+ def initialize
41
+ @type = :most_commented_this_week
42
+ end
43
+ end
44
+
45
+ class MostTrackedBills < Bills
46
+ def initialize
47
+ @type = :most_tracked_bills_this_week
48
+ end
49
+ end
50
+
51
+ class MostSupportedBills
52
+ def initialize
53
+ @type = :most_supported_bills_this_week
54
+ end
55
+ end
56
+
57
+ class MostOpposedBills
58
+ def initialize
59
+ @type = :most_opposed_bills_this_week
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,17 @@
1
+ module OpenCongressApi
2
+ module Fetcher
3
+ class People < Base
4
+ def initialize
5
+ @type = :people
6
+ end
7
+
8
+ def format_result(result)
9
+ OpenCongressApi::Type::Person.new(result)
10
+ end
11
+
12
+ def json_result(json)
13
+ json['people']
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,32 @@
1
+ require "opencongress_api/fetcher/base"
2
+ require "opencongress_api/fetcher/people"
3
+ require "opencongress_api/fetcher/bills"
4
+
5
+ module OpenCongressApi
6
+ module Fetcher
7
+ class << self
8
+ def for(type)
9
+ return case type.to_sym
10
+ when :people
11
+ People.new
12
+ when :bills
13
+ Bills.new
14
+ when :hot_bills
15
+ HotBills.new
16
+ when :most_blogged_bills
17
+ MostBloggedBills.new
18
+ when :newsworthy_bills
19
+ NewsworthyBills.new
20
+ when :most_commented_bills
21
+ MostCommentedBills.new
22
+ when :most_tracked_bills
23
+ MostTrackedBills.new
24
+ when :most_supported_bills
25
+ MostSupportedBills.new
26
+ when :most_opposed_bills
27
+ MostOpposedBills.new
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,17 @@
1
+ module OpenCongressApi
2
+ module Type
3
+ class Bill
4
+ attr_accessor :bill
5
+
6
+ def initialize(bill = {})
7
+ self.bill = bill
8
+ end
9
+
10
+ def method_missing(id, *args)
11
+ return self.bill[id.id2name]
12
+ end
13
+
14
+ # TODO: Special accessors that need typecasting
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module OpenCongressApi
2
+ module Type
3
+ class Person
4
+ attr_accessor :person
5
+
6
+ def initialize(person = {})
7
+ self.person = person
8
+ end
9
+
10
+ def method_missing(id, *args)
11
+ return self.person[id.id2name]
12
+ end
13
+
14
+ # TODO: Special accessors that need typecasting
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,2 @@
1
+ require "opencongress_api/type/person"
2
+ require "opencongress_api/type/bill"
@@ -0,0 +1,3 @@
1
+ module OpencongressApi
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,46 @@
1
+ require 'net/http'
2
+ require 'date'
3
+ require 'rubygems'
4
+ require 'json'
5
+ require 'xmlsimple'
6
+ require 'opencongress_api/type'
7
+ require 'opencongress_api/collection'
8
+ require "opencongress_api/fetcher"
9
+ require "opencongress_api/version"
10
+
11
+ module OpenCongressApi
12
+ # Errors
13
+ class InvalidRequestTypeError < StandardError
14
+ def initialize(type)
15
+ super "Fetch type '#{type}' is not valid."
16
+ end
17
+ end
18
+
19
+ class Client
20
+ FETCH_TYPES = [:people, :hot_bills, :most_blogged_bills,
21
+ :bills_in_the_news, :most_commented,
22
+ :most_tracked_bills, :most_supported_bills,
23
+ :most_opposed_bills]
24
+ def self.fetch(type, options = {})
25
+ check_configuration!
26
+
27
+ options = default_options.merge(options)
28
+ if FETCH_TYPES.include? type.to_sym
29
+ fetcher = OpenCongressApi::Fetcher.for(type)
30
+ return fetcher.fetch(options)
31
+ else
32
+ raise InvalidRequestTypeError.new(type)
33
+ end
34
+ end
35
+
36
+ protected
37
+ def self.default_options
38
+ {
39
+ }
40
+ end
41
+
42
+ def self.check_configuration!
43
+
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "opencongress_api/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "OpenCongressAPI"
7
+ s.version = OpencongressApi::VERSION
8
+ s.authors = ["Jason Berlinsky"]
9
+ s.email = ["jason@jasonberlinsky.com"]
10
+ s.homepage = "http://www.jasonberlinsky.com/"
11
+ s.summary = %q(A wrapper for the OpenCongress API)
12
+ s.description = %q(An easy to use wrapper for the OpenCongress API)
13
+
14
+ s.rubyforge_project = "opencongress_api"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ s.add_runtime_dependency "rest-client"
24
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe RMeetup::Client, 'trying to fetch an unknown type' do
4
+ it 'should throw an error' do
5
+ lambda {
6
+ OpenCongressApi::Client.fetch(:clowns)
7
+ }.should raise_error(OpenCongressApi::InvalidRequestTypeError)
8
+ end
9
+ end
10
+
11
+ describe RMeetup::Client, 'fetching some people' do
12
+ before do
13
+ @topics_fetcher = mock(OpenCongressApi::Fetcher::People)
14
+ @topics_fetcher.stub!(:fetch).and_return([])
15
+ @type = :people
16
+ end
17
+
18
+ it 'should try to get a Topic Fetcher' do
19
+ RMeetup::Fetcher.should_receive(:for).with(@type).and_return(@topics_fetcher)
20
+ RMeetup::Client.fetch(@type,{})
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ describe OpenCongressApi::Fetcher, 'being told to get a certain type of fetcher' do
4
+ before do
5
+ @fetcher_types = %w(people)
6
+ end
7
+
8
+ it 'should return the correct fetcher' do
9
+ @fetcher_types.each do |type|
10
+ fetcher = OpenCongressApi::Fetcher.for(type)
11
+ fetcher.class.name.should eql("OpenCongressApi::Fetcher::#{type.capitalize}")
12
+ end
13
+ end
14
+
15
+ it 'should return nil if asked for an invalid fetcher' do
16
+ OpenCongressApi::Fetcher.for(:clowns).should be_nil
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
+
3
+ describe OpenCongressApi::Fetcher::People, 'fetching some people' do
4
+ before do
5
+ @fetcher = OpenCongressApi::Fetcher::People.new
6
+ @fetcher.extend(OpenCongressApi::FakeResponse::People)
7
+ end
8
+
9
+ it 'should return a collection of members' do
10
+ @fetcher.fetch.each do |result|
11
+ result.should be_kind_of(OpenCongressApi::Type::Person)
12
+ end
13
+ end
14
+ end
File without changes
@@ -0,0 +1 @@
1
+ {"total_pages":44,"people":[{"person":{"name":"John Davies","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":403226,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Clay","user_approval":null,"lastname":"Davies","oc_users_tracking":0,"page_views_count":45,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"D000089","person_id":403226,"birthday":"1920-05-01","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Davies","email":null}},{"person":{"name":"John Campbell","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":402246,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Campbell","oc_users_tracking":0,"page_views_count":107,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"C000091","person_id":402246,"birthday":"1765-09-11","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Campbell","email":null}},{"person":{"name":"John Tibbatts","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":410835,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Wooleston","user_approval":null,"lastname":"Tibbatts","oc_users_tracking":0,"page_views_count":47,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000261","person_id":410835,"birthday":"1802-06-12","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Tibbatts","email":null}},{"person":{"name":"John Hall","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":404940,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Hall","oc_users_tracking":0,"page_views_count":313,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"H000055","person_id":404940,"birthday":"1729-11-27","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Hall","email":null}},{"person":{"name":"John Kluczynski","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":406430,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Carl","user_approval":null,"lastname":"Kluczynski","oc_users_tracking":0,"page_views_count":4,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"K000273","person_id":406430,"birthday":"1896-02-15","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Kluczynski","email":null}},{"person":{"name":"John McCulloch","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":407391,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"McCulloch","oc_users_tracking":0,"page_views_count":17,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"M000390","person_id":407391,"birthday":"1806-11-15","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John McCulloch","email":null}},{"person":{"name":"John Robsion","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":409329,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Marshall","user_approval":null,"lastname":"Robsion","oc_users_tracking":0,"page_views_count":53,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"R000358","person_id":409329,"birthday":"1873-01-02","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Robsion","email":null}},{"person":{"name":"John Chamberlain","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":402422,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Curtis","user_approval":null,"lastname":"Chamberlain","oc_users_tracking":0,"page_views_count":21,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"C000279","person_id":402422,"birthday":"1772-06-05","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Chamberlain","email":null}},{"person":{"name":"John Hickman","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":405424,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Hickman","oc_users_tracking":0,"page_views_count":33,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"H000562","person_id":405424,"birthday":"1810-09-11","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Hickman","email":null}},{"person":{"name":"John Hulbert","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":405780,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Whitefield","user_approval":null,"lastname":"Hulbert","oc_users_tracking":0,"page_views_count":26,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"H000935","person_id":405780,"birthday":"1770-06-01","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Hulbert","email":null}},{"person":{"name":"John Harrison","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":405148,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Scott","user_approval":null,"lastname":"Harrison","oc_users_tracking":0,"page_views_count":36,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"H000272","person_id":405148,"birthday":"1804-10-04","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Harrison","email":null}},{"person":{"name":"John Murphy","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":408061,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Murphy","oc_users_tracking":0,"page_views_count":45,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"M001097","person_id":408061,"birthday":null,"website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Murphy","email":null}},{"person":{"name":"John Harris","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":405125,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Thomas","user_approval":null,"lastname":"Harris","oc_users_tracking":0,"page_views_count":38,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"H000247","person_id":405125,"birthday":"1823-05-08","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Harris","email":null}},{"person":{"name":"John Miller","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":407719,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Gaines","user_approval":null,"lastname":"Miller","oc_users_tracking":0,"page_views_count":34,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"M000741","person_id":407719,"birthday":"1812-11-29","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Miller","email":null}},{"person":{"name":"John Breckinridge","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":401745,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Bayne","user_approval":null,"lastname":"Breckinridge","oc_users_tracking":0,"page_views_count":67,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"B000788","person_id":401745,"birthday":"1913-11-29","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Breckinridge","email":null}},{"person":{"name":"John Buechner","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":401986,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"William","user_approval":null,"lastname":"Buechner","oc_users_tracking":0,"page_views_count":37,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"B001036","person_id":401986,"birthday":"1940-06-04","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Buechner","email":null}},{"person":{"name":"Sen. John Thune [R, SD]","votes_democratic_position":120,"recent_news":[{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T23:53:34-05:00","title":"10 Republicans who could jump into presidential race","contains_term":"republican","excerpt":"8. John Thune The South Dakota senator quickly removed his name from 2012 presidential discussions last year, but with his good looks and a little more name recognition, he could be a contender. 7. Mike Huckabee The former Arkansas governor and ...","fti_names":"'10':1 '2012':21 '7':42 '8':9 'arkansa':47 'azcentral.com':50 'contend':41 'could':4,38 'dakota':14 'discuss':23 'former':46 'good':29 'governor':48 'huckabe':44 'john':10 'jump':5 'last':24 'littl':33 'look':30 'mike':43 'name':19,35 'presidenti':7,22 'quick':16 'race':8 'recognit':36 'remov':17 'republican':2 'senat':15 'south':13 'thune':11 'year':25","source_url":null,"url":"http://www.azcentral.com/news/politics/articles/2012/02/22/20120222republicans-who-may-jump-into-presidential-race-politico-prog.html","weight":null,"date":"2012-02-22T23:09:55-05:00","id":12507573,"scraped_from":"bing","is_news":true,"source":"AZCentral.com","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T23:53:34-05:00","title":"Cornyn Leads Donation Race to Become Senate Whip","contains_term":"senate","excerpt":"Burr also gave Allen $2,000 from his regular campaign fund. South Dakota Sen. John Thune, who also may seek the whip position, donated $40,000 to Senate colleagues and $37,500 to Senate GOP candidates from his leadership PAC last year.","fti_names":"'000':14,34 '2':13 '37':39 '40':33 '500':40 'allen':12 'also':10,26 'becom':6 'burr':9 'campaign':18 'candid':44 'colleagu':37 'cornyn':1 'dakota':21 'donat':3,32 'fund':19 'gave':11 'gop':43 'john':23 'last':49 'lead':2 'leadership':47 'may':27 'newsmax.com':51 'pac':48 'posit':31 'race':4 'regular':17 'seek':28 'sen':22 'senat':7,36,42 'south':20 'thune':24 'whip':8,30 'year':50","source_url":null,"url":"http://www.newsmax.com/Politics/Cornyn-Senate-Whip-GOP/2012/02/22/id/430230","weight":null,"date":"2012-02-22T16:07:35-05:00","id":12507571,"scraped_from":"bing","is_news":true,"source":"NewsMax.com","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:17-05:00","title":"10 politicians who could save the GOP","contains_term":"senator","excerpt":"8. John Thune: The South Dakota senator quickly removed his name from 2012 presidential discussions last year, but with his good looks and a little more name recognition, he could be a contender. 9. Nikki Haley: The Romney surrogate and South Carolina ...","fti_names":"'10':1 '2012':20 '8':8 '9':41 'carolina':49 'contend':40 'could':4,37 'dakota':13 'discuss':22 'good':28 'gop':7 'haley':43 'john':9 'last':23 'littl':32 'look':29 'name':18,34 'nikki':42 'politician':2 'politico.com':50 'presidenti':21 'quick':15 'recognit':35 'remov':16 'romney':45 'save':5 'senat':14 'south':12,48 'surrog':46 'thune':10 'year':24","source_url":null,"url":"http://www.politico.com/news/stories/0212/73160.html","weight":null,"date":"2012-02-22T10:09:40-05:00","id":12489733,"scraped_from":"bing","is_news":true,"source":"Politico.com","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:17-05:00","title":"Sen. John Thune to speak at Economic Development meeting Wednesday","contains_term":"sen\\.","excerpt":"Sen. John Thune will be the keynote speaker at the annual Spearfish Economic Development Corporation members meeting Wednesday at 5:30 p.m. At the meeting, which will take place at Spearfish Convention Center, the EDC will elect new officers ...","fti_names":"'30':31 '5':30 'annual':21 'center':43 'citi':51 'convent':42 'corpor':25 'develop':8,24 'econom':7,23 'edc':45 'elect':47 'john':2,12 'journal':52 'keynot':17 'meet':9,27,35 'member':26 'new':48 'offic':49 'p.m':32 'place':39 'rapid':50 'sen':1,11 'speak':5 'speaker':18 'spearfish':22,41 'take':38 'thune':3,13 'wednesday':10,28","source_url":null,"url":"http://rapidcityjournal.com/mobile/article_00c12714-5ce1-11e1-a3d7-001871e3ce6c.html","weight":null,"date":"2012-02-22T09:19:34-05:00","id":12489730,"scraped_from":"bing","is_news":true,"source":"Rapid City Journal","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:17-05:00","title":"Transit funding could get bump","contains_term":"senate","excerpt":"Sen. John Thune sits on the Commerce and Finance Committee, the Senate panel where the bill also will need approval to pass. Thune endorses the Senate version of public transit funding \u201cI think the Senate approach is the correct one,\u201d Thune said.","fti_names":"'also':22 'approach':41 'approv':25 'argus':48 'bill':21 'bump':5 'commerc':12 'committe':15 'correct':44 'could':3 'endors':29 'financ':14 'fund':2,36 'get':4 'john':7 'leader':49 'need':24 'one':45 'panel':18 'pass':27 'public':34 'said':47 'sen':6 'senat':17,31,40 'sit':9 'think':38 'thune':8,28,46 'transit':1,35 'version':32","source_url":null,"url":"http://www.argusleader.com/article/20120222/VOICES/302220024/Transit-funding-could-get-bump","weight":null,"date":"2012-02-22T02:45:51-05:00","id":12489732,"scraped_from":"bing","is_news":true,"source":"Argus Leader","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:17-05:00","title":"SEN. JOHN THUNE IS YOUR CANDIDATE, REPUBLICANS!","contains_term":"republican","excerpt":"BRADENTYON, Fla. -- I am sorry that today Florida voters must decide among a group of men - who are all imperfect - which should be the next President of the United States. Anyone who has seen the video on our front page of former Mass. Gov. Mitt Romney ..","fti_names":"'american':54 'among':19 'anyon':38 'bradentyon':8 'candid':6 'decid':18 'fla':9 'florida':15 'former':49 'front':46 'gov':51 'group':21 'imperfect':27 'john':2 'mass':50 'men':23 'mitt':52 'must':17 'next':32 'page':47 'presid':33 'report':55 'republican':7 'romney':53 'seen':41 'sen':1 'sorri':12 'state':37 'thune':3 'today':14 'unit':36 'video':43 'voter':16","source_url":null,"url":"http://www.american-reporter.com/4,403/10.html","weight":null,"date":"2012-02-22T01:05:38-05:00","id":12489731,"scraped_from":"bing","is_news":true,"source":"American Reporter","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:22-05:00","title":"Transit funding could get bump","contains_term":"senate","excerpt":"...fuel taxes. We need a dedicated, predictable funding source, Sioux Area Metro General Manager Karen Walton told Johnson. Sen. John Thune sits on the Commerce and Finance Committee, the Senate panel where the bill also will need approval to pass. Thune e","fti_names":"'also':40 'approv':43 'area':16 'argus':48 'bill':39 'bump':5 'commerc':30 'committe':33 'could':3 'dedic':11 'e':47 'financ':32 'fuel':6 'fund':2,13 'general':18 'get':4 'john':25 'johnson':23 'karen':20 'leader':49 'manag':19 'metro':17 'need':9,42 'panel':36 'pass':45 'predict':12 'sen':24 'senat':35 'sioux':15 'sit':27 'sourc':14 'tax':7 'thune':26,46 'told':22 'transit':1 'walton':21","source_url":"http://www.argusleader.com/","url":"http://www.argusleader.com/article/20120222/VOICES/302220024","weight":null,"date":"2012-02-22T01:00:00-05:00","id":12489736,"scraped_from":"daylife","is_news":true,"source":"Argus Leader","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T00:01:46-05:00","title":"S.D. Rep. Noem Questions Youth Labor Regulations","contains_term":"senator","excerpt":"South Dakota Representative Kristi Noem and U.S. Senator John Thune are concerned about the changes that could take place in regard to how labor regulations could restrict how youth is hired as farm workers. \u00a0 Noem and two of her colleagues sent a letter ","fti_names":"'chang':22 'colleagu':47 'concern':19 'could':24,33 'dakota':9 'farm':40 'hire':38 'john':16 'kristi':11 'labor':6,31 'letter':50 'msnbc.com':51 'noem':3,12,42 'place':26 'question':4 'regard':28 'regul':7,32 'rep':2 'repres':10 'restrict':34 's.d':1 'senat':15 'sent':48 'south':8 'take':25 'thune':17 'two':44 'u.s':14 'worker':41 'youth':5,36","source_url":null,"url":"http://www.msnbc.msn.com/id/46473991","weight":null,"date":"2012-02-21T20:19:18-05:00","id":12468739,"scraped_from":"bing","is_news":true,"source":"msnbc.com","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T00:01:46-05:00","title":"The Hill: Race Underway For Senate Republican Whip","contains_term":"republican","excerpt":"Senator Jon Kyl of Arizona is currently the Senate Republican ... The other person in the mix is John Thune. He is the number-three ranking member of the Senate Republican leadership, and serves as the chairman of the Senate Republican Conference.","fti_names":"'arizona':13 'chairman':45 'confer':50 'current':15 'hill':2 'john':26 'jon':10 'kyl':11 'leadership':40 'member':35 'mix':24 'number':32 'number-thre':31 'person':21 'race':3 'rank':34 'republican':7,18,39,49 'senat':6,9,17,38,48 'serv':42 'three':33 'thune':27 'underway':4 'wamu':51 'whip':8","source_url":null,"url":"http://wamu.org/news/12/02/21/the_hill_race_underway_for_senate_republican_whip","weight":null,"date":"2012-02-21T18:10:27-05:00","id":12468740,"scraped_from":"bing","is_news":true,"source":"WAMU","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-21T12:37:04-05:00","title":"SEN. JOHN THUNE IS YOUR CANDIDATE, REPUBLICANS!","contains_term":"republican","excerpt":"BRADENTYON, Fla. -- I am sorry that today Florida voters must decide among a group of men - who are all imperfect - which should be the next President of the United States. Anyone who has seen the video on our front page of former Mass. Gov. Mitt Romney ..","fti_names":"'american':54 'among':19 'anyon':38 'bradentyon':8 'candid':6 'decid':18 'fla':9 'florida':15 'former':49 'front':46 'gov':51 'group':21 'imperfect':27 'john':2 'mass':50 'men':23 'mitt':52 'must':17 'next':32 'page':47 'presid':33 'report':55 'republican':7 'romney':53 'seen':41 'sen':1 'sorri':12 'state':37 'thune':3 'today':14 'unit':36 'video':43 'voter':16","source_url":null,"url":"http://www.american-reporter.com/4,402/10.html","weight":null,"date":"2012-02-21T01:28:18-05:00","id":12452352,"scraped_from":"bing","is_news":true,"source":"American Reporter","status":"OK","commentariable_type":"Person","is_ok":true}],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":94.921875,"abstains_percentage":0.0,"votes_most_often_with_id":400325,"entered_top_blog":null,"sponsored_bills_passed_rank":34,"abstains_percentage_rank":76,"cosponsored_bills_passed_rank":84,"abstains":0,"cosponsored_bills":164,"party_votes_percentage_rank":17,"sponsored_bills":15,"votes_least_often_with_id":400357,"person_id":400546,"cosponsored_bills_rank":61,"entered_top_news":null,"same_party_votes_least_often_with_id":412492,"sponsored_bills_passed":0,"sponsored_bills_rank":79,"cosponsored_bills_passed":0,"opposing_party_votes_most_often_with_id":300077},"with_party_percentage":94.921875,"votes_republican_position":243,"youtube_id":"JohnThune","district":null,"url":null,"watchdog_id":null,"recent_blogs":[{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:14-05:00","title":"Heard Around Town, Feb. 22, 2012","contains_term":"senate","excerpt":"\u201cI believe she may announce this week,\u201d Mike Long said. She is also said to have hired a campaign manager: Dick Wadhams, a veteran Colorado GOP operative who ran Senate campaigns for John Thune and George Allen.","fti_names":"'2012':6 '22':5 'allen':43 'also':19 'announc':11 'around':2 'believ':8 'campaign':25,37 'citi':44 'colorado':31 'dick':27 'feb':4 'georg':42 'gop':32 'heard':1 'hire':23 'john':39 'long':15 'manag':26 'may':10 'mike':14 'oper':33 'ran':35 'said':16,20 'senat':36 'state':46 'thune':40 'town':3 'veteran':30 'wadham':28 'week':13","source_url":"","url":"/url?q=http://www.cityandstateny.com/heard-town-feb-22-2012/&sa=U&ei=yidFT-4Co8uxAsK5zcIP&ved=0CD0QmAEwBw&usg=AFQjCNGINFYzR73oP4YE6jwxVeLNnAF8WQ","weight":null,"date":"2012-02-22T01:00:00-05:00","id":12489721,"scraped_from":"google blog","is_news":false,"source":"City and State","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:14-05:00","title":"FarmPolicy \u00bb Blog Archives \u00bb Crop Insurance Perspective from ...","contains_term":"sen\\.","excerpt":"Sen. John Thune (R., S.D.)- I would echo what&#39;s been said by most of my colleagues with regard to the number one priority of South Dakotan in the Farm Bill is a strong crop insurance program. By hands down, it&#39;s what the ...","fti_names":"'archiv':3 'bill':38 'blog':2 'colleagu':24 'crop':4,42 'dakotan':34 'echo':15 'farm':37 'farmpolici':1 'good':53 'hand':46 'insur':5,43 'john':9 'keith':52 'number':29 'one':30 'perspect':6 'prioriti':31 'program':44 'r':11 'regard':26 's.d':12 'said':19 'sen':8 'south':33 'strong':41 'thune':10 'would':14","source_url":"","url":"/url?q=http://farmpolicy.com/2012/02/22/crop-insurance-perspective-from-lawmakers/&sa=U&ei=yidFT-4Co8uxAsK5zcIP&ved=0CDQQmAEwBQ&usg=AFQjCNGJgcbiNCNOpOIAQGKqlBDDh56tYg","weight":null,"date":"2012-02-22T01:00:00-05:00","id":12489719,"scraped_from":"google blog","is_news":false,"source":"Keith Good","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:14-05:00","title":"Policy Plate: E15 decision, Bon App\u00e9tit to Sustainability ...","contains_term":"sen\\.","excerpt":"South Dakota Sen. John Thune defends continued government support of agribusiness even in times of sky-high income and profits by saying that \u201cregardless of whether crop and livestock prices are low or high, agriculture ...","fti_names":"'agribusi':19 'agricultur':44 'app\u00e9tit':6 'bon':5 'carr':46 'continu':15 'crop':36 'dakota':10 'decis':4 'defend':14 'e15':3 'even':20 'govern':16 'high':26,43 'incom':27 'john':12 'livestock':38 'low':41 'plate':2 'polici':1 'price':39 'profit':29 'regardless':33 'say':31 'sen':11 'sky':25 'sky-high':24 'south':9 'support':17 'sustain':8 'thune':13 'time':22 'whether':35","source_url":"","url":"/url?q=http://www.ewg.org/agmag/2012/02/policy-plate-e15-decision/&sa=U&ei=yidFT-4Co8uxAsK5zcIP&ved=0CE4QmAEwCw&usg=AFQjCNGjxk8Ob46UewerE81KQtzksJTGlw","weight":null,"date":"2012-02-21T01:00:00-05:00","id":12489725,"scraped_from":"google blog","is_news":false,"source":"Don Carr","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:14-05:00","title":"Where is the Senate support for Santorum? | The Prevailing Ethos","contains_term":"senate","excerpt":"Lindsey Graham, R-South Carolina, who served with Santorum in the Senate and the House. At another news conference, Sen. John Thune, R-South Dakota, simply said he came out early for Romney. \u201cI think he&#39;s in the best ...","fti_names":"'admin':53 'anoth':28 'best':52 'came':41 'carolina':16 'confer':30 'dakota':37 'earli':43 'etho':10 'graham':12 'hous':26 'john':32 'lindsey':11 'news':29 'prevail':9 'r':14,35 'r-south':13,34 'romney':45 'said':39 'santorum':7,20 'sen':31 'senat':4,23 'serv':18 'simpli':38 'south':15,36 'support':5 'think':47 'thune':33","source_url":"","url":"/url?q=http://theprevailingethos.com/2012/02/21/where-is-the-senate-support-for-santorum/&sa=U&ei=yidFT-4Co8uxAsK5zcIP&ved=0CDgQmAEwBg&usg=AFQjCNGsVFvrrvFUaY7uBYQ3-1W6g9gCnw","weight":null,"date":"2012-02-21T01:00:00-05:00","id":12489720,"scraped_from":"google blog","is_news":false,"source":"admin","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-22T12:37:14-05:00","title":"Grassley says child labor letter needs a response","contains_term":"senator","excerpt":"A letter to Labor Secretary Hilda Solis, authored by South Dakota Senator John Thune and co-signed Iowa Senator Chuck Grassley and others, about proposed child labor standards has, so far, gone unanswered. Senator ...","fti_names":"'author':16 'child':3,35 'chuck':29 'co':25 'co-sign':24 'dakota':19 'far':40 'gone':41 'grassley':1,30 'harker':45 'hilda':14 'iowa':27 'john':21 'juli':44 'labor':4,12,36 'letter':5,10 'need':6 'other':32 'propos':34 'respons':8 'say':2 'secretari':13 'senat':20,28,43 'sign':26 'soli':15 'south':18 'standard':37 'thune':22 'unansw':42","source_url":"","url":"/url?q=http://brownfieldagnews.com/2012/02/21/grassley-says-child-labor-letter-needs-a-response/&sa=U&ei=yidFT-4Co8uxAsK5zcIP&ved=0CC8QmAEwBA&usg=AFQjCNEm-daieCsCxq5gprI6wViERBjFNg","weight":null,"date":"2012-02-21T01:00:00-05:00","id":12489718,"scraped_from":"google blog","is_news":false,"source":"Julie Harker","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-21T12:37:01-05:00","title":"Where is the Senate support for Santorum? | The Prevailing Ethos","contains_term":"senate","excerpt":"Lindsey Graham, R-South Carolina, who served with Santorum in the Senate and the House. At another news conference, Sen. John Thune, R-South Dakota, simply said he came out early for Romney. \u201cI think he&#39;s in the best ...","fti_names":"'admin':53 'anoth':28 'best':52 'came':41 'carolina':16 'confer':30 'dakota':37 'earli':43 'etho':10 'graham':12 'hous':26 'john':32 'lindsey':11 'news':29 'prevail':9 'r':14,35 'r-south':13,34 'romney':45 'said':39 'santorum':7,20 'sen':31 'senat':4,23 'serv':18 'simpli':38 'south':15,36 'support':5 'think':47 'thune':33","source_url":"","url":"/url?q=http://theprevailingethos.com/2012/02/21/where-is-the-senate-support-for-santorum/&sa=U&ei=PdZDT5mvEoPkqgGJuKHgCg&ved=0CDQQmAEwBQ&usg=AFQjCNHv_DNotLmdiDSuIa5vGJ3iWEmpkQ","weight":null,"date":"2012-02-21T01:00:00-05:00","id":12452344,"scraped_from":"google blog","is_news":false,"source":"admin","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-21T12:37:01-05:00","title":"[WATCH]: John Thune on the rape amendment","contains_term":"senator","excerpt":"Quick Links. &#39;Forced&#39; Choice Act Pension Transparency Senator John Thune Stimulus Bill Strip Health Care Provisions Way to Oblivion [WATCH]: John Thune 2012. Affiliates. [WATCH]: John Thune on the rape amendment ...","fti_names":"'2012':30 'act':12 'admin':39 'affili':31 'amend':7,38 'bill':19 'care':22 'choic':11 'forc':10 'health':21 'john':2,16,28,33 'link':9 'oblivion':26 'pension':13 'provis':23 'quick':8 'rape':6,37 'senat':15 'stimulus':18 'strip':20 'thune':3,17,29,34 'transpar':14 'watch':1,27,32 'way':24","source_url":"","url":"/url?q=http://johnthune.on-the-rag.com/2012/02/20/watch-john-thune-on-the-rape-amendment/&sa=U&ei=PdZDT5mvEoPkqgGJuKHgCg&ved=0CDAQmAEwBA&usg=AFQjCNHxEuFmU8YjZXR7o9qOYiy06fCdOA","weight":null,"date":"2012-02-20T01:00:00-05:00","id":12452343,"scraped_from":"google blog","is_news":false,"source":"admin","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-20T12:38:26-05:00","title":"Four Republican Bills That Are Not About Jobs | The Bilerico Project","contains_term":"republican","excerpt":"Wait. Republicans have jobs bills? Oh! That&#39;s why they had to remind us. Sen. John Thune, in the YouTube video below call on Sen. Harry Reid to stop blocking what he called bills \u201cthat deal with capital the issue of capital ...","fti_names":"'bilerico':10 'bill':3,16,45 'block':41 'call':34,44 'capit':49,53 'deal':47 'four':1 'harri':37 'heath':55 'issu':51 'job':8,15 'john':27 'oh':17 'project':11 'reid':38 'remind':24 'republican':2,13 'sen':26,36 'stop':40 'terranc':54 'thune':28 'us':25 'video':32 'wait':12 'youtub':31","source_url":"","url":"/url?q=http://www.bilerico.com/2012/02/four_republican_bills_that_are_not_about_jobs.php&sa=U&ei=EYVCT8jzMs6-2AXW1-2fCA&ved=0CC8QmAEwBA&usg=AFQjCNE4YE8CXZsvQoozaFGPTlKem7ZaNg","weight":null,"date":"2012-02-19T01:00:00-05:00","id":12414999,"scraped_from":"google blog","is_news":false,"source":"Terrance Heath","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-19T12:37:48-05:00","title":"Four Republican Bills That Are Not About Jobs | The Bilerico Project","contains_term":"republican","excerpt":"Wait. Republicans have jobs bills? Oh! That&#39;s why they had to remind us. Sen. John Thune, in the YouTube video below call on Sen. Harry Reid to stop blocking what he called bills \u201cthat deal with capital the issue of capital ...","fti_names":"'bilerico':10 'bill':3,16,45 'block':41 'call':34,44 'capit':49,53 'deal':47 'four':1 'harri':37 'heath':55 'issu':51 'job':8,15 'john':27 'oh':17 'project':11 'reid':38 'remind':24 'republican':2,13 'sen':26,36 'stop':40 'terranc':54 'thune':28 'us':25 'video':32 'wait':12 'youtub':31","source_url":"","url":"/url?q=http://www.bilerico.com/2012/02/four_republican_bills_that_are_not_about_jobs.php&sa=U&ei=azNBT4yHIKLu2gXN3pycCA&ved=0CC8QmAEwBA&usg=AFQjCNFIzlVuLn6oSO_9QCWwqe8np0REvQ","weight":null,"date":"2012-02-19T01:00:00-05:00","id":12377459,"scraped_from":"google blog","is_news":false,"source":"Terrance Heath","status":"OK","commentariable_type":"Person","is_ok":true},{"average_rating":null,"commentariable_id":400546,"created_at":"2012-02-20T12:38:26-05:00","title":"Scott Brown | Re-Election | Elizabeth Warren | The Daily Caller","contains_term":"republican","excerpt":"Scott Brown (R-MA) (L) and U.S. Sen. John Thune (R-SD) leave the podium following a news conference at the U.S. Capitol February 16, 2012 in Washington, DC. The four Republican senators met to discuss four bipartisan ...","fti_names":"'16':37 '2012':38 'bipartisan':50 'brown':2,12 'caller':10 'capitol':35 'confer':31 'daili':9 'dc':41 'discuss':48 'elect':5 'elizabeth':6 'februari':36 'follow':28 'four':43,49 'john':20 'l':16 'leav':25 'ma':15 'met':46 'news':30 'podium':27 'r':14,23 'r-ma':13 'r-sd':22 'rahn':52 're':4 're-elect':3 'republican':44 'scott':1,11 'sd':24 'sen':19 'senat':45 'thune':21 'u.s':18,34 'warren':7 'washington':40","source_url":"","url":"/url?q=http://dailycaller.com/2012/02/17/scott-brown-has-solid-lead-against-dem-challenger-elizabeth-warren/&sa=U&ei=EYVCT8jzMs6-2AXW1-2fCA&ved=0CEkQmAEwCg&usg=AFQjCNFwkXgEbQTUiAuNO3RLAOpVNCQxIw","weight":null,"date":"2012-02-18T01:00:00-05:00","id":12415005,"scraped_from":"google blog","is_news":false,"source":"Will Rahn","status":"OK","commentariable_type":"Person","is_ok":true}],"middlename":null,"user_approval":4.65384615384615,"lastname":"Thune","oc_users_tracking":198,"page_views_count":31798,"congress_office":"511 Dirksen Senate Office Building","metavid_id":"John_Thune","contact_webform":"http://www.thune.senate.gov/public/index.cfm/contact","gender":"M","bioguide_id":"T000250","person_id":400546,"birthday":"1961-01-07","website":"http://www.thune.senate.gov/","total_session_votes":256,"oc_user_comments":11,"fax":"202-228-5429","phone":"202-224-2321","firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":12977,"biography":null,"unaccented_name":"John Thune","email":null}},{"person":{"name":"John Yates","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":411943,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Barentse","user_approval":null,"lastname":"Yates","oc_users_tracking":0,"page_views_count":159,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"Y000009","person_id":411943,"birthday":"1784-02-01","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Yates","email":null}},{"person":{"name":"John Test","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":410720,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Test","oc_users_tracking":0,"page_views_count":45,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000138","person_id":410720,"birthday":"1771-11-12","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Test","email":null}},{"person":{"name":"John Terry","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":410716,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Hart","user_approval":null,"lastname":"Terry","oc_users_tracking":0,"page_views_count":37,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000134","person_id":410716,"birthday":"1924-11-14","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Terry","email":null}},{"person":{"name":"John Tipton","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":410857,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Tipton","oc_users_tracking":0,"page_views_count":43,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000284","person_id":410857,"birthday":"1786-08-14","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Tipton","email":null}},{"person":{"name":"John Trimble","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":410943,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Trimble","oc_users_tracking":0,"page_views_count":49,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000374","person_id":410943,"birthday":"1812-02-07","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Trimble","email":null}},{"person":{"name":"John Tweedy","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":411009,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Hubbard","user_approval":null,"lastname":"Tweedy","oc_users_tracking":0,"page_views_count":50,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000441","person_id":411009,"birthday":"1814-11-09","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Tweedy","email":null}},{"person":{"name":"John Tucker","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":410970,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Randolph","user_approval":null,"lastname":"Tucker","oc_users_tracking":0,"page_views_count":63,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"T000401","person_id":410970,"birthday":"1823-12-24","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Tucker","email":null}},{"person":{"name":"John Van Alen","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":411070,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Evert","user_approval":null,"lastname":"Van Alen","oc_users_tracking":0,"page_views_count":40,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"V000012","person_id":411070,"birthday":null,"website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Van Alen","email":null}},{"person":{"name":"John Walker","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":411238,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Walker","oc_users_tracking":0,"page_views_count":62,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"W000059","person_id":411238,"birthday":"1744-02-13","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Walker","email":null}},{"person":{"name":"John Walker","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":411239,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Randall","user_approval":null,"lastname":"Walker","oc_users_tracking":0,"page_views_count":67,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"W000060","person_id":411239,"birthday":"1874-02-23","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Walker","email":null}},{"person":{"name":"John Haring","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":405085,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":null,"user_approval":null,"lastname":"Haring","oc_users_tracking":0,"page_views_count":15,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"H000205","person_id":405085,"birthday":"1739-09-28","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Haring","email":null}},{"person":{"name":"John Miller","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":407718,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Franklin","user_approval":null,"lastname":"Miller","oc_users_tracking":0,"page_views_count":26,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"M000739","person_id":407718,"birthday":null,"website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Miller","email":null}},{"person":{"name":"John Langley","votes_democratic_position":null,"recent_news":[],"person_stats":{"entered_top_viewed":null,"party_votes_percentage":null,"abstains_percentage":null,"votes_most_often_with_id":null,"entered_top_blog":null,"sponsored_bills_passed_rank":null,"abstains_percentage_rank":null,"cosponsored_bills_passed_rank":null,"abstains":null,"cosponsored_bills":null,"party_votes_percentage_rank":null,"sponsored_bills":null,"votes_least_often_with_id":null,"person_id":406581,"cosponsored_bills_rank":null,"entered_top_news":null,"same_party_votes_least_often_with_id":null,"sponsored_bills_passed":null,"sponsored_bills_rank":null,"cosponsored_bills_passed":null,"opposing_party_votes_most_often_with_id":null},"with_party_percentage":0.0,"votes_republican_position":null,"youtube_id":null,"district":null,"url":null,"watchdog_id":null,"recent_blogs":[],"middlename":"Wesley","user_approval":null,"lastname":"Langley","oc_users_tracking":0,"page_views_count":19,"congress_office":null,"metavid_id":null,"contact_webform":null,"gender":"M","bioguide_id":"L000072","person_id":406581,"birthday":"1868-01-14","website":null,"total_session_votes":null,"oc_user_comments":0,"fax":null,"phone":null,"firstname":"John","sunlight_nickname":null,"religion":null,"blog_article_count":null,"biography":null,"unaccented_name":"John Langley","email":null}}]}w
@@ -0,0 +1,22 @@
1
+ $: << File.join(File.dirname(__FILE__), '..', 'lib')
2
+ require 'opencongress_api'
3
+
4
+ TEST_ROOT = File.dirname(__FILE__)
5
+
6
+ # Override the get_response portion of fetchers
7
+ # so that we don't have to go out and hit the internets
8
+ module OpenCongressApi::FakeResponse
9
+ module Error
10
+ protected
11
+ def get_response(url)
12
+ File.read(File.join(TEST_ROOT, 'responses', 'error.json'))
13
+ end
14
+ end
15
+
16
+ module People
17
+ protected
18
+ def get_response(url)
19
+ File.read(File.join(TEST_ROOT, 'responses', 'people.json'))
20
+ end
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: OpenCongressAPI
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jason Berlinsky
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: &70255826722060 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70255826722060
25
+ description: An easy to use wrapper for the OpenCongress API
26
+ email:
27
+ - jason@jasonberlinsky.com
28
+ executables: []
29
+ extensions: []
30
+ extra_rdoc_files: []
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - Rakefile
35
+ - lib/opencongress_api.rb
36
+ - lib/opencongress_api/collection.rb
37
+ - lib/opencongress_api/fetcher.rb
38
+ - lib/opencongress_api/fetcher/base.rb
39
+ - lib/opencongress_api/fetcher/bills.rb
40
+ - lib/opencongress_api/fetcher/people.rb
41
+ - lib/opencongress_api/type.rb
42
+ - lib/opencongress_api/type/bill.rb
43
+ - lib/opencongress_api/type/person.rb
44
+ - lib/opencongress_api/version.rb
45
+ - opencongress_api.gemspec
46
+ - spec/client_spec.rb
47
+ - spec/fetcher_spec.rb
48
+ - spec/fetchers/people_spec.rb
49
+ - spec/responses/error.json
50
+ - spec/responses/people.json
51
+ - spec/spec_helper.rb
52
+ homepage: http://www.jasonberlinsky.com/
53
+ licenses: []
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubyforge_project: opencongress_api
72
+ rubygems_version: 1.8.15
73
+ signing_key:
74
+ specification_version: 3
75
+ summary: A wrapper for the OpenCongress API
76
+ test_files:
77
+ - spec/client_spec.rb
78
+ - spec/fetcher_spec.rb
79
+ - spec/fetchers/people_spec.rb
80
+ - spec/responses/error.json
81
+ - spec/responses/people.json
82
+ - spec/spec_helper.rb