OpenCongressAPI 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/lib/opencongress_api/collection.rb +56 -0
- data/lib/opencongress_api/fetcher/base.rb +87 -0
- data/lib/opencongress_api/fetcher/bills.rb +63 -0
- data/lib/opencongress_api/fetcher/people.rb +17 -0
- data/lib/opencongress_api/fetcher.rb +32 -0
- data/lib/opencongress_api/type/bill.rb +17 -0
- data/lib/opencongress_api/type/person.rb +17 -0
- data/lib/opencongress_api/type.rb +2 -0
- data/lib/opencongress_api/version.rb +3 -0
- data/lib/opencongress_api.rb +46 -0
- data/opencongress_api.gemspec +24 -0
- data/spec/client_spec.rb +22 -0
- data/spec/fetcher_spec.rb +18 -0
- data/spec/fetchers/people_spec.rb +14 -0
- data/spec/responses/error.json +0 -0
- data/spec/responses/people.json +1 -0
- data/spec/spec_helper.rb +22 -0
- metadata +82 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
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,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
|
data/spec/client_spec.rb
ADDED
@@ -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'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'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'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'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. 'Forced' 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'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'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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|