ael_tracker 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9666e7cfa90c8f688671ffdc74ac24a9247b66be
4
+ data.tar.gz: 730c065639d6c661a42959400fc6dc7b5a051fb4
5
+ SHA512:
6
+ metadata.gz: 4a4a630afdc0b7064762fec859d7697ec1b41d7526f82f4c0e205f1104afba9164f367b79cd561ffaa32ed708902459d5eceaa2b8cac660c2727353f77e6d311
7
+ data.tar.gz: 1811968d5c9b287cf7b041695d9bf2c02d08a59625ce6eb4d29f12a7937cf025b4b4ddd2f3df10af0f05966b4c7d9ea6a68d90925e0e39945d383be1ef28ff50
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ vendor
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ael_tracker.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Bradley Sheehan
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,103 @@
1
+ # AEL Tracker
2
+
3
+ A little gem that integrates with the AelTracker API. From the official site: http://www.aeltracker.org/api/:
4
+
5
+ >The Advanced Energy Legislation Tracker database contains information for advanced energy legislation across all 50 states plus District of Columbia for free to any user.
6
+
7
+
8
+ ## Installation
9
+
10
+ Add this line to your application's Gemfile:
11
+
12
+ $ source 'https://rubygems.org'
13
+
14
+ $ gem 'ael_tracker'
15
+
16
+ And then execute:
17
+
18
+ $ bundle
19
+
20
+ Or install it yourself as:
21
+
22
+ $ gem install ael_tracker
23
+
24
+ ##Set Up
25
+
26
+ Include the following line in your ruby environment,
27
+ before the code:
28
+
29
+ $ require 'ael_tracker'
30
+
31
+ ## Usage
32
+
33
+ The ael_tracker gem does not yet fully wrap the AelTracker API. What it does allow you to do is find bill specific information using the bill's id in the AEL Tracker database.
34
+
35
+ To do this, create a new instance of Bill, passing in the bill id. Then, the following methods are available for obtaining information about this specific bill:
36
+
37
+ bill_id
38
+
39
+ os_bill_id
40
+
41
+ os_chamber
42
+
43
+ os_session
44
+
45
+ time_stamp_creation
46
+
47
+ time_stamp_update
48
+
49
+ time_stamp_news_google
50
+
51
+ time_stamp_news_yahoo
52
+
53
+ time_stamp_os_check
54
+
55
+ auto_time_os_update
56
+
57
+ title
58
+
59
+ chamber_name
60
+
61
+ number
62
+
63
+ state
64
+
65
+ year_filed
66
+
67
+ os_date_passed_lower
68
+
69
+ os_date_passed_upper
70
+
71
+ os_date_signed
72
+
73
+ os_status
74
+
75
+ policy_category
76
+
77
+ summary
78
+
79
+ actions
80
+
81
+ votes
82
+
83
+ sponsors
84
+
85
+ versions
86
+
87
+ #####For example:
88
+
89
+ <pre><code>
90
+ bill = AelTracker::Bill.new(1)
91
+
92
+ bill.state # returns "Alabama"
93
+ bill.poicy_category # returns "Infrastructure"
94
+ </code></pre>
95
+
96
+
97
+ ## Contributing
98
+
99
+ 1. Fork it
100
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
101
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
102
+ 4. Push to the branch (`git push origin my-new-feature`)
103
+ 5. Create new Pull Request
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.test_files = FileList['spec/lib/*_spec.rb']
7
+ t.verbose = true
8
+ end
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ael_tracker/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ael_tracker"
8
+ spec.version = AelTracker::VERSION
9
+ spec.authors = ["Bradley Sheehan"]
10
+ spec.email = ["bradpsheehan@gmail.com"]
11
+ spec.description = %q{A little gem that integrates with the AelTracker API. From the official site: http://www.aeltracker.org/api. The AelTracker (i.e. Advanced Energy Legislation Tracker) API provides methods for obtaining basic information about advanced energy legislation.}
12
+ spec.summary = %q{Ruby wrapper for Advanced Energy Legislation Tracker API.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.add_development_dependency "rspec"
17
+ spec.add_development_dependency "vcr"
18
+ spec.add_development_dependency "webmock"
19
+ spec.add_runtime_dependency 'httparty'
20
+ spec.add_runtime_dependency 'json'
21
+
22
+ spec.files = `git ls-files`.split($/)
23
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
24
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
25
+ spec.require_paths = ["lib"]
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.3"
28
+ spec.add_development_dependency "rake"
29
+ end
@@ -0,0 +1,8 @@
1
+ require "ael_tracker/version"
2
+
3
+ require "#{File.dirname(__FILE__)}/ael_tracker/bill.rb"
4
+
5
+
6
+ # Dir[File.dirname(__FILE__) + './lib/ael_tracker/*.rb'].each do |file|
7
+ # require file
8
+ # end
@@ -0,0 +1,38 @@
1
+ require "httparty"
2
+ require "json"
3
+
4
+ module AelTracker
5
+ class Bill
6
+
7
+ attr_accessor :id
8
+
9
+ include HTTParty
10
+
11
+ base_uri "http://www.aeltracker.org/api"
12
+
13
+ def initialize(bill_id)
14
+ self.id = bill_id
15
+ end
16
+
17
+ def profile
18
+ @profile ||= get_profile
19
+ end
20
+
21
+ def method_missing(name, *args, &block)
22
+ if profile.has_key?(name.to_s)
23
+ profile[name.to_s]
24
+ else
25
+ super
26
+ # "Hey there, #{name} is not an attribute of bill in our records."
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def get_profile
33
+ a = self.class.get "/bills/#{self.id}"
34
+ JSON.parse( a.parsed_response )
35
+ end
36
+
37
+ end
38
+ end
@@ -0,0 +1,3 @@
1
+ module AelTracker
2
+ VERSION = "0.0.4"
3
+ end
@@ -0,0 +1,169 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://www.aeltracker.org/api/bills/1
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers: {}
10
+ response:
11
+ status:
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ Date:
16
+ - Wed, 25 Sep 2013 17:39:49 GMT
17
+ Server:
18
+ - Apache/2.2.14 (Ubuntu)
19
+ X-Powered-By:
20
+ - PHP/5.3.2-1ubuntu4.21
21
+ Vary:
22
+ - Accept-Encoding
23
+ Transfer-Encoding:
24
+ - chunked
25
+ Content-Type:
26
+ - text/html
27
+ body:
28
+ encoding: UTF-8
29
+ string: '{"bill_id":"1","os_bill_id":"ALB00004667","os_chamber":"lower","os_session":"2013rs","time_stamp_creation":"2013-03-30
30
+ 15:26:04 UTC","time_stamp_update":"2013-08-31 02:31:24 UTC","time_stamp_news_google":"2013-09-25
31
+ 17:21:19 UTC","time_stamp_news_yahoo":"2013-09-25 17:25:58 UTC","time_stamp_os_check":"2013-09-25
32
+ 17:20:01 UTC","auto_time_os_update":"2013-04-20 01:10:01","title":"Relating
33
+ to contracts for municipal buildings and public utilities systems; to authorize
34
+ municipalities to enter into agreements with private companies that are registered
35
+ as service contract providers to provide ancillary service contracts to customers
36
+ of the utilities system...","chamber_name":"House","number":"HB 119","state":"Alabama","year_filed":"2013","os_date_passed_lower":"0000-00-00","os_date_passed_upper":"0000-00-00","os_date_signed":"0000-00-00","os_status":"introduced","policy_category":"Infrastructure","summary":"Under
37
+ existing law, the governing body of a municipality may contract with a private
38
+ company for the construction, extension, or repair of a municipal building
39
+ plant, waterworks system, or electric light and power plant.\r\nThis bill
40
+ would authorize the governing body of a municipality to enter into agreements
41
+ with private companies, registered as service contract providers pursuant
42
+ to statute, to provide ancillary service contracts to residential utility
43
+ customers with the endorsement of the municipality. This bill would also authorize
44
+ the governing body to apply any fees it receives pursuant to such an agreement
45
+ to its general revenue fund.","actions":[{"actor":"lower","date":"2013-04-18","action":"Motion
46
+ to Adopt adopted Roll Call 637","type":["amendment:passed"]},{"actor":"lower","date":"2013-04-18","action":"Wood
47
+ motion to Substitute a Companion Bill adopted Voice Vote","type":["other"]},{"actor":"lower","date":"2013-04-18","action":"Wood Amendment
48
+ Offered","type":["amendment:introduced"]},{"actor":"lower","date":"2013-04-18","action":"County
49
+ and Municipal Government Amendment Offered","type":["amendment:introduced"]},{"actor":"lower","date":"2013-04-18","action":"Wood
50
+ motion to Table adopted Roll Call 636","type":["amendment:passed"]},{"actor":"lower","date":"2013-04-18","action":"Third
51
+ Reading Indefinitely Postponed","type":["bill:failed"]},{"actor":"lower","date":"2013-02-05","action":"Read
52
+ for the first time and referred to the House of Representatives committee
53
+ on County and Municipal Government","type":["bill:reading:1","committee:referred"]},{"actor":"lower","date":"2013-02-21","action":"Read
54
+ for the second time and placed on the calendar 1 amendment","type":["bill:reading:2"]},{"actor":"lower","date":"2013-04-18","action":"Wood
55
+ motion to Indefinitely Postpone adopted Voice Vote","type":["other"]}],"votes":[{"other_count":"8","yes_count":"95","motion":"Wood
56
+ motion to Table adopted Roll Call 636","chamber":"lower","chamber_name":"House","session":"2013rs","passed":"1","date":"2013-04-18","no_count":"1","committee":"","tally":[{"leg_id":"ALL000122","name":"Robinson
57
+ (O)","type":"yes"},{"leg_id":"ALL000120","name":"Roberts","type":"yes"},{"leg_id":"ALL000119","name":"Rich","type":"yes"},{"leg_id":"ALL000118","name":"Poole","type":"yes"},{"leg_id":"ALL000117","name":"Payne","type":"yes"},{"leg_id":"ALL000116","name":"Patterson","type":"yes"},{"leg_id":"ALL000114","name":"Nordgren","type":"yes"},{"leg_id":"ALL000112","name":"Newton
58
+ (C)","type":"yes"},{"leg_id":"ALL000111","name":"Morrow","type":"yes"},{"leg_id":"ALL000110","name":"Moore
59
+ (M)","type":"yes"},{"leg_id":"ALL000109","name":"Moore (B)","type":"yes"},{"leg_id":"ALL000107","name":"Millican","type":"yes"},{"leg_id":"ALL000106","name":"Merrill","type":"yes"},{"leg_id":"ALL000105","name":"Melton","type":"yes"},{"leg_id":"ALL000104","name":"McMillan","type":"yes"},{"leg_id":"ALL000103","name":"McCutcheon","type":"yes"},{"leg_id":"ALL000102","name":"McClurkin","type":"yes"},{"leg_id":"ALL000101","name":"McClendon","type":"yes"},{"leg_id":"ALL000099","name":"McCampbell","type":"yes"},{"leg_id":"ALL000098","name":"McAdory","type":"yes"},{"leg_id":"ALL000097","name":"Mask","type":"yes"},{"leg_id":"ALL000096","name":"Love","type":"yes"},{"leg_id":"ALL000095","name":"Long","type":"yes"},{"leg_id":"ALL000094","name":"Lindsey","type":"yes"},{"leg_id":"ALL000093","name":"Lee","type":"yes"},{"leg_id":"ALL000092","name":"Laird","type":"yes"},{"leg_id":"ALL000091","name":"Knight","type":"yes"},{"leg_id":"ALL000089","name":"Jones","type":"yes"},{"leg_id":"ALL000088","name":"Johnson
60
+ (W)","type":"yes"},{"leg_id":"ALL000087","name":"Johnson (R)","type":"yes"},{"leg_id":"ALL000086","name":"Johnson
61
+ (K)","type":"yes"},{"leg_id":"ALL000084","name":"Ison","type":"yes"},{"leg_id":"ALL000083","name":"Hurst","type":"yes"},{"leg_id":"ALL000082","name":"Hubbard
62
+ (M)","type":"yes"},{"leg_id":"ALL000081","name":"Hubbard (J)","type":"yes"},{"leg_id":"ALL000080","name":"Howard","type":"yes"},{"leg_id":"ALL000078","name":"Hill","type":"yes"},{"leg_id":"ALL000077","name":"Henry","type":"yes"},{"leg_id":"ALL000076","name":"Harper","type":"yes"},{"leg_id":"ALL000075","name":"Hammon","type":"yes"},{"leg_id":"ALL000073","name":"Grimsley","type":"yes"},{"leg_id":"ALL000072","name":"Greeson","type":"yes"},{"leg_id":"ALL000071","name":"Greer","type":"yes"},{"leg_id":"ALL000070","name":"Givan","type":"yes"},{"leg_id":"ALL000069","name":"Gaston","type":"yes"},{"leg_id":"ALL000067","name":"Forte","type":"yes"},{"leg_id":"ALL000066","name":"Ford","type":"yes"},{"leg_id":"ALL000065","name":"Fincher","type":"yes"},{"leg_id":"ALL000064","name":"Faust","type":"yes"},{"leg_id":"ALL000063","name":"Farley","type":"yes"},{"leg_id":"ALL000062","name":"England","type":"yes"},{"leg_id":"ALL000061","name":"Drake","type":"yes"},{"leg_id":"ALL000060","name":"DeMarco","type":"yes"},{"leg_id":"ALL000059","name":"Davis","type":"yes"},{"leg_id":"ALL000058","name":"Colston","type":"yes"},{"leg_id":"ALL000057","name":"Collins","type":"yes"},{"leg_id":"ALL000056","name":"Coleman-Evans","type":"yes"},{"leg_id":"ALL000055","name":"Clouse","type":"yes"},{"leg_id":"ALL000054","name":"Chesteen","type":"yes"},{"leg_id":"ALL000053","name":"Carns","type":"yes"},{"leg_id":"ALL000052","name":"Buttram","type":"yes"},{"leg_id":"ALL000141","name":"Butler","type":"yes"},{"leg_id":"ALL000051","name":"Buskey","type":"yes"},{"leg_id":"ALL000050","name":"Burdine","type":"yes"},{"leg_id":"ALL000049","name":"Brown","type":"yes"},{"leg_id":"ALL000048","name":"Bridges","type":"yes"},{"leg_id":"ALL000047","name":"Bracy","type":"yes"},{"leg_id":"ALL000046","name":"Boyd","type":"yes"},{"leg_id":"ALL000045","name":"Boothe","type":"yes"},{"leg_id":"ALL000044","name":"Boman","type":"yes"},{"leg_id":"ALL000043","name":"Black","type":"yes"},{"leg_id":"ALL000042","name":"Beech","type":"yes"},{"leg_id":"ALL000041","name":"Beckman","type":"yes"},{"leg_id":"ALL000040","name":"Baughn","type":"yes"},{"leg_id":"ALL000039","name":"Barton","type":"yes"},{"leg_id":"ALL000037","name":"Ball","type":"yes"},{"leg_id":"ALL000036","name":"Baker","type":"yes"},{"leg_id":"ALL000142","name":"Standridge","type":"other"},{"leg_id":"ALL000113","name":"Newton
63
+ (D)","type":"other"},{"leg_id":"ALL000108","name":"Mitchell","type":"other"},{"leg_id":"ALL000100","name":"McClammy","type":"other"},{"leg_id":"ALL000085","name":"Jackson","type":"other"},{"leg_id":"ALL000079","name":"Holmes","type":"other"},{"leg_id":"ALL000074","name":"Hall","type":"other"},{"leg_id":"ALL000038","name":"Bandy","type":"other"},{"leg_id":"ALL000123","name":"Rogers","type":"yes"},{"leg_id":"ALL000124","name":"Sanderford","type":"yes"},{"leg_id":"ALL000125","name":"Scott","type":"yes"},{"leg_id":"ALL000126","name":"Sessions","type":"yes"},{"leg_id":"ALL000145","name":"Shedd","type":"yes"},{"leg_id":"ALL000127","name":"Shiver","type":"yes"},{"leg_id":"ALL000129","name":"Todd","type":"yes"},{"leg_id":"ALL000130","name":"Treadaway","type":"yes"},{"leg_id":"ALL000131","name":"Tuggle","type":"yes"},{"leg_id":"ALL000132","name":"Vance","type":"yes"},{"leg_id":"ALL000133","name":"Wallace","type":"yes"},{"leg_id":"ALL000134","name":"Warren","type":"yes"},{"leg_id":"ALL000135","name":"Weaver","type":"yes"},{"leg_id":"ALL000136","name":"Williams
64
+ (D)","type":"yes"},{"leg_id":"ALL000137","name":"Williams (J)","type":"yes"},{"leg_id":"ALL000138","name":"Williams
65
+ (P)","type":"yes"},{"leg_id":"ALL000139","name":"Wood","type":"yes"},{"leg_id":"ALL000140","name":"Wren","type":"yes"},{"leg_id":"ALL000121","name":"Robinson
66
+ (J)","type":"no"}]},{"other_count":"7","yes_count":"97","motion":"Motion to
67
+ Adopt adopted Roll Call 637","chamber":"lower","chamber_name":"House","session":"2013rs","passed":"1","date":"2013-04-18","no_count":"0","committee":"","tally":[{"leg_id":"ALL000140","name":"Wren","type":"yes"},{"leg_id":"ALL000139","name":"Wood","type":"yes"},{"leg_id":"ALL000138","name":"Williams
68
+ (P)","type":"yes"},{"leg_id":"ALL000137","name":"Williams (J)","type":"yes"},{"leg_id":"ALL000136","name":"Williams
69
+ (D)","type":"yes"},{"leg_id":"ALL000135","name":"Weaver","type":"yes"},{"leg_id":"ALL000134","name":"Warren","type":"yes"},{"leg_id":"ALL000133","name":"Wallace","type":"yes"},{"leg_id":"ALL000132","name":"Vance","type":"yes"},{"leg_id":"ALL000131","name":"Tuggle","type":"yes"},{"leg_id":"ALL000130","name":"Treadaway","type":"yes"},{"leg_id":"ALL000129","name":"Todd","type":"yes"},{"leg_id":"ALL000142","name":"Standridge","type":"yes"},{"leg_id":"ALL000127","name":"Shiver","type":"yes"},{"leg_id":"ALL000126","name":"Sessions","type":"yes"},{"leg_id":"ALL000145","name":"Shedd","type":"yes"},{"leg_id":"ALL000125","name":"Scott","type":"yes"},{"leg_id":"ALL000124","name":"Sanderford","type":"yes"},{"leg_id":"ALL000123","name":"Rogers","type":"yes"},{"leg_id":"ALL000122","name":"Robinson
70
+ (O)","type":"yes"},{"leg_id":"ALL000121","name":"Robinson (J)","type":"yes"},{"leg_id":"ALL000120","name":"Roberts","type":"yes"},{"leg_id":"ALL000119","name":"Rich","type":"yes"},{"leg_id":"ALL000118","name":"Poole","type":"yes"},{"leg_id":"ALL000117","name":"Payne","type":"yes"},{"leg_id":"ALL000116","name":"Patterson","type":"yes"},{"leg_id":"ALL000114","name":"Nordgren","type":"yes"},{"leg_id":"ALL000112","name":"Newton
71
+ (C)","type":"yes"},{"leg_id":"ALL000111","name":"Morrow","type":"yes"},{"leg_id":"ALL000110","name":"Moore
72
+ (M)","type":"yes"},{"leg_id":"ALL000109","name":"Moore (B)","type":"yes"},{"leg_id":"ALL000107","name":"Millican","type":"yes"},{"leg_id":"ALL000106","name":"Merrill","type":"yes"},{"leg_id":"ALL000105","name":"Melton","type":"yes"},{"leg_id":"ALL000104","name":"McMillan","type":"yes"},{"leg_id":"ALL000103","name":"McCutcheon","type":"yes"},{"leg_id":"ALL000102","name":"McClurkin","type":"yes"},{"leg_id":"ALL000101","name":"McClendon","type":"yes"},{"leg_id":"ALL000100","name":"McClammy","type":"yes"},{"leg_id":"ALL000099","name":"McCampbell","type":"yes"},{"leg_id":"ALL000098","name":"McAdory","type":"yes"},{"leg_id":"ALL000097","name":"Mask","type":"yes"},{"leg_id":"ALL000096","name":"Love","type":"yes"},{"leg_id":"ALL000095","name":"Long","type":"yes"},{"leg_id":"ALL000094","name":"Lindsey","type":"yes"},{"leg_id":"ALL000093","name":"Lee","type":"yes"},{"leg_id":"ALL000092","name":"Laird","type":"yes"},{"leg_id":"ALL000091","name":"Knight","type":"yes"},{"leg_id":"ALL000089","name":"Jones","type":"yes"},{"leg_id":"ALL000088","name":"Johnson
73
+ (W)","type":"yes"},{"leg_id":"ALL000087","name":"Johnson (R)","type":"yes"},{"leg_id":"ALL000086","name":"Johnson
74
+ (K)","type":"yes"},{"leg_id":"ALL000084","name":"Ison","type":"yes"},{"leg_id":"ALL000083","name":"Hurst","type":"yes"},{"leg_id":"ALL000082","name":"Hubbard
75
+ (M)","type":"yes"},{"leg_id":"ALL000081","name":"Hubbard (J)","type":"yes"},{"leg_id":"ALL000080","name":"Howard","type":"yes"},{"leg_id":"ALL000079","name":"Holmes","type":"yes"},{"leg_id":"ALL000078","name":"Hill","type":"yes"},{"leg_id":"ALL000077","name":"Henry","type":"yes"},{"leg_id":"ALL000076","name":"Harper","type":"yes"},{"leg_id":"ALL000075","name":"Hammon","type":"yes"},{"leg_id":"ALL000074","name":"Hall","type":"yes"},{"leg_id":"ALL000073","name":"Grimsley","type":"yes"},{"leg_id":"ALL000072","name":"Greeson","type":"yes"},{"leg_id":"ALL000071","name":"Greer","type":"yes"},{"leg_id":"ALL000069","name":"Gaston","type":"yes"},{"leg_id":"ALL000067","name":"Forte","type":"yes"},{"leg_id":"ALL000066","name":"Ford","type":"yes"},{"leg_id":"ALL000065","name":"Fincher","type":"yes"},{"leg_id":"ALL000064","name":"Faust","type":"yes"},{"leg_id":"ALL000063","name":"Farley","type":"yes"},{"leg_id":"ALL000062","name":"England","type":"yes"},{"leg_id":"ALL000061","name":"Drake","type":"yes"},{"leg_id":"ALL000060","name":"DeMarco","type":"yes"},{"leg_id":"ALL000059","name":"Davis","type":"yes"},{"leg_id":"ALL000058","name":"Colston","type":"yes"},{"leg_id":"ALL000057","name":"Collins","type":"yes"},{"leg_id":"ALL000056","name":"Coleman-Evans","type":"yes"},{"leg_id":"ALL000055","name":"Clouse","type":"yes"},{"leg_id":"ALL000054","name":"Chesteen","type":"yes"},{"leg_id":"ALL000053","name":"Carns","type":"yes"},{"leg_id":"ALL000052","name":"Buttram","type":"yes"},{"leg_id":"ALL000141","name":"Butler","type":"yes"},{"leg_id":"ALL000051","name":"Buskey","type":"yes"},{"leg_id":"ALL000050","name":"Burdine","type":"yes"},{"leg_id":"ALL000049","name":"Brown","type":"yes"},{"leg_id":"ALL000048","name":"Bridges","type":"yes"},{"leg_id":"ALL000047","name":"Bracy","type":"yes"},{"leg_id":"ALL000046","name":"Boyd","type":"yes"},{"leg_id":"ALL000045","name":"Boothe","type":"yes"},{"leg_id":"ALL000042","name":"Beech","type":"yes"},{"leg_id":"ALL000041","name":"Beckman","type":"yes"},{"leg_id":"ALL000040","name":"Baughn","type":"yes"},{"leg_id":"ALL000039","name":"Barton","type":"yes"},{"leg_id":"ALL000038","name":"Bandy","type":"yes"},{"leg_id":"ALL000036","name":"Baker","type":"yes"},{"leg_id":"ALL000113","name":"Newton
76
+ (D)","type":"other"},{"leg_id":"ALL000108","name":"Mitchell","type":"other"},{"leg_id":"ALL000085","name":"Jackson","type":"other"},{"leg_id":"ALL000070","name":"Givan","type":"other"},{"leg_id":"ALL000044","name":"Boman","type":"other"},{"leg_id":"ALL000043","name":"Black","type":"other"},{"leg_id":"ALL000037","name":"Ball","type":"other"}]}],"sponsors":[{"leg_id":"ALL000139","updated_at":"2013-09-25
77
+ 00:04:51","full_name":"Randy Wood","first_name":"Randy","middle_name":"","last_name":"Wood","district":"36","office_address":"Room
78
+ 120\n11 S. Union Street\nMontgomery, AL 36130","state_abbreviation":"al","votesmart_id":"27617","party":"Republican","email":"","photo_url":"http:\/\/www.legislature.state.al.us\/graphics\/housepics\/wood_r.jpeg","roles":[{"term":"2011-2014","end_date":null,"district":"36","chamber":"lower","state":"al","party":"Republican","type":"member","start_date":null},{"term":"2011-2014","committee_id":"ALC000014","end_date":null,"chamber":"lower","state":"al","committee":"Rules","position":"member","type":"committee
79
+ member","start_date":null},{"term":"2011-2014","committee_id":"ALC000006","end_date":null,"chamber":"lower","state":"al","committee":"Constitutions,
80
+ Campaigns and Elections","position":"vice chair","type":"committee member","start_date":null},{"term":"2011-2014","committee_id":"ALC000067","end_date":null,"chamber":"lower","state":"al","committee":"County
81
+ and Municipal Government","position":"vice chair","type":"committee member","start_date":null}],"old_roles":"","url":"http:\/\/www.legislature.state.al.us\/house\/representatives\/housebios\/hd036.html","chamber":"lower","chamber_name":"House","offices":[{"fax":null,"name":"Capitol
82
+ Office","phone":"334-242-7700","address":"Room 424\n11 S. Union Street\nMontgomery,
83
+ AL 36130","type":"capitol","email":null}],"country":"us","office_phone":"334-242-7700"}],"versions":[{"mimetype":"application\/pdf","url":"http:\/\/alisondb.legislature.state.al.us\/acas\/searchableinstruments\/2013rs\/PrintFiles\/HB119-int.pdf","doc_id":"ALD00013146","name":"introduced","title":""}]}'
84
+ http_version:
85
+ recorded_at: Wed, 25 Sep 2013 17:39:49 GMT
86
+ - request:
87
+ method: get
88
+ uri: http://www.aeltracker.org/api/bills/1
89
+ body:
90
+ encoding: US-ASCII
91
+ string: ''
92
+ headers: {}
93
+ response:
94
+ status:
95
+ code: 200
96
+ message: OK
97
+ headers:
98
+ Date:
99
+ - Wed, 25 Sep 2013 17:39:50 GMT
100
+ Server:
101
+ - Apache/2.2.14 (Ubuntu)
102
+ X-Powered-By:
103
+ - PHP/5.3.2-1ubuntu4.21
104
+ Vary:
105
+ - Accept-Encoding
106
+ Transfer-Encoding:
107
+ - chunked
108
+ Content-Type:
109
+ - text/html
110
+ body:
111
+ encoding: UTF-8
112
+ string: '{"bill_id":"1","os_bill_id":"ALB00004667","os_chamber":"lower","os_session":"2013rs","time_stamp_creation":"2013-03-30
113
+ 15:26:04 UTC","time_stamp_update":"2013-08-31 02:31:24 UTC","time_stamp_news_google":"2013-09-25
114
+ 17:21:19 UTC","time_stamp_news_yahoo":"2013-09-25 17:25:58 UTC","time_stamp_os_check":"2013-09-25
115
+ 17:20:01 UTC","auto_time_os_update":"2013-04-20 01:10:01","title":"Relating
116
+ to contracts for municipal buildings and public utilities systems; to authorize
117
+ municipalities to enter into agreements with private companies that are registered
118
+ as service contract providers to provide ancillary service contracts to customers
119
+ of the utilities system...","chamber_name":"House","number":"HB 119","state":"Alabama","year_filed":"2013","os_date_passed_lower":"0000-00-00","os_date_passed_upper":"0000-00-00","os_date_signed":"0000-00-00","os_status":"introduced","policy_category":"Infrastructure","summary":"Under
120
+ existing law, the governing body of a municipality may contract with a private
121
+ company for the construction, extension, or repair of a municipal building
122
+ plant, waterworks system, or electric light and power plant.\r\nThis bill
123
+ would authorize the governing body of a municipality to enter into agreements
124
+ with private companies, registered as service contract providers pursuant
125
+ to statute, to provide ancillary service contracts to residential utility
126
+ customers with the endorsement of the municipality. This bill would also authorize
127
+ the governing body to apply any fees it receives pursuant to such an agreement
128
+ to its general revenue fund.","actions":[{"actor":"lower","date":"2013-04-18","action":"Motion
129
+ to Adopt adopted Roll Call 637","type":["amendment:passed"]},{"actor":"lower","date":"2013-04-18","action":"Wood
130
+ motion to Substitute a Companion Bill adopted Voice Vote","type":["other"]},{"actor":"lower","date":"2013-04-18","action":"Wood Amendment
131
+ Offered","type":["amendment:introduced"]},{"actor":"lower","date":"2013-04-18","action":"County
132
+ and Municipal Government Amendment Offered","type":["amendment:introduced"]},{"actor":"lower","date":"2013-04-18","action":"Wood
133
+ motion to Table adopted Roll Call 636","type":["amendment:passed"]},{"actor":"lower","date":"2013-04-18","action":"Third
134
+ Reading Indefinitely Postponed","type":["bill:failed"]},{"actor":"lower","date":"2013-02-05","action":"Read
135
+ for the first time and referred to the House of Representatives committee
136
+ on County and Municipal Government","type":["bill:reading:1","committee:referred"]},{"actor":"lower","date":"2013-02-21","action":"Read
137
+ for the second time and placed on the calendar 1 amendment","type":["bill:reading:2"]},{"actor":"lower","date":"2013-04-18","action":"Wood
138
+ motion to Indefinitely Postpone adopted Voice Vote","type":["other"]}],"votes":[{"other_count":"8","yes_count":"95","motion":"Wood
139
+ motion to Table adopted Roll Call 636","chamber":"lower","chamber_name":"House","session":"2013rs","passed":"1","date":"2013-04-18","no_count":"1","committee":"","tally":[{"leg_id":"ALL000122","name":"Robinson
140
+ (O)","type":"yes"},{"leg_id":"ALL000120","name":"Roberts","type":"yes"},{"leg_id":"ALL000119","name":"Rich","type":"yes"},{"leg_id":"ALL000118","name":"Poole","type":"yes"},{"leg_id":"ALL000117","name":"Payne","type":"yes"},{"leg_id":"ALL000116","name":"Patterson","type":"yes"},{"leg_id":"ALL000114","name":"Nordgren","type":"yes"},{"leg_id":"ALL000112","name":"Newton
141
+ (C)","type":"yes"},{"leg_id":"ALL000111","name":"Morrow","type":"yes"},{"leg_id":"ALL000110","name":"Moore
142
+ (M)","type":"yes"},{"leg_id":"ALL000109","name":"Moore (B)","type":"yes"},{"leg_id":"ALL000107","name":"Millican","type":"yes"},{"leg_id":"ALL000106","name":"Merrill","type":"yes"},{"leg_id":"ALL000105","name":"Melton","type":"yes"},{"leg_id":"ALL000104","name":"McMillan","type":"yes"},{"leg_id":"ALL000103","name":"McCutcheon","type":"yes"},{"leg_id":"ALL000102","name":"McClurkin","type":"yes"},{"leg_id":"ALL000101","name":"McClendon","type":"yes"},{"leg_id":"ALL000099","name":"McCampbell","type":"yes"},{"leg_id":"ALL000098","name":"McAdory","type":"yes"},{"leg_id":"ALL000097","name":"Mask","type":"yes"},{"leg_id":"ALL000096","name":"Love","type":"yes"},{"leg_id":"ALL000095","name":"Long","type":"yes"},{"leg_id":"ALL000094","name":"Lindsey","type":"yes"},{"leg_id":"ALL000093","name":"Lee","type":"yes"},{"leg_id":"ALL000092","name":"Laird","type":"yes"},{"leg_id":"ALL000091","name":"Knight","type":"yes"},{"leg_id":"ALL000089","name":"Jones","type":"yes"},{"leg_id":"ALL000088","name":"Johnson
143
+ (W)","type":"yes"},{"leg_id":"ALL000087","name":"Johnson (R)","type":"yes"},{"leg_id":"ALL000086","name":"Johnson
144
+ (K)","type":"yes"},{"leg_id":"ALL000084","name":"Ison","type":"yes"},{"leg_id":"ALL000083","name":"Hurst","type":"yes"},{"leg_id":"ALL000082","name":"Hubbard
145
+ (M)","type":"yes"},{"leg_id":"ALL000081","name":"Hubbard (J)","type":"yes"},{"leg_id":"ALL000080","name":"Howard","type":"yes"},{"leg_id":"ALL000078","name":"Hill","type":"yes"},{"leg_id":"ALL000077","name":"Henry","type":"yes"},{"leg_id":"ALL000076","name":"Harper","type":"yes"},{"leg_id":"ALL000075","name":"Hammon","type":"yes"},{"leg_id":"ALL000073","name":"Grimsley","type":"yes"},{"leg_id":"ALL000072","name":"Greeson","type":"yes"},{"leg_id":"ALL000071","name":"Greer","type":"yes"},{"leg_id":"ALL000070","name":"Givan","type":"yes"},{"leg_id":"ALL000069","name":"Gaston","type":"yes"},{"leg_id":"ALL000067","name":"Forte","type":"yes"},{"leg_id":"ALL000066","name":"Ford","type":"yes"},{"leg_id":"ALL000065","name":"Fincher","type":"yes"},{"leg_id":"ALL000064","name":"Faust","type":"yes"},{"leg_id":"ALL000063","name":"Farley","type":"yes"},{"leg_id":"ALL000062","name":"England","type":"yes"},{"leg_id":"ALL000061","name":"Drake","type":"yes"},{"leg_id":"ALL000060","name":"DeMarco","type":"yes"},{"leg_id":"ALL000059","name":"Davis","type":"yes"},{"leg_id":"ALL000058","name":"Colston","type":"yes"},{"leg_id":"ALL000057","name":"Collins","type":"yes"},{"leg_id":"ALL000056","name":"Coleman-Evans","type":"yes"},{"leg_id":"ALL000055","name":"Clouse","type":"yes"},{"leg_id":"ALL000054","name":"Chesteen","type":"yes"},{"leg_id":"ALL000053","name":"Carns","type":"yes"},{"leg_id":"ALL000052","name":"Buttram","type":"yes"},{"leg_id":"ALL000141","name":"Butler","type":"yes"},{"leg_id":"ALL000051","name":"Buskey","type":"yes"},{"leg_id":"ALL000050","name":"Burdine","type":"yes"},{"leg_id":"ALL000049","name":"Brown","type":"yes"},{"leg_id":"ALL000048","name":"Bridges","type":"yes"},{"leg_id":"ALL000047","name":"Bracy","type":"yes"},{"leg_id":"ALL000046","name":"Boyd","type":"yes"},{"leg_id":"ALL000045","name":"Boothe","type":"yes"},{"leg_id":"ALL000044","name":"Boman","type":"yes"},{"leg_id":"ALL000043","name":"Black","type":"yes"},{"leg_id":"ALL000042","name":"Beech","type":"yes"},{"leg_id":"ALL000041","name":"Beckman","type":"yes"},{"leg_id":"ALL000040","name":"Baughn","type":"yes"},{"leg_id":"ALL000039","name":"Barton","type":"yes"},{"leg_id":"ALL000037","name":"Ball","type":"yes"},{"leg_id":"ALL000036","name":"Baker","type":"yes"},{"leg_id":"ALL000142","name":"Standridge","type":"other"},{"leg_id":"ALL000113","name":"Newton
146
+ (D)","type":"other"},{"leg_id":"ALL000108","name":"Mitchell","type":"other"},{"leg_id":"ALL000100","name":"McClammy","type":"other"},{"leg_id":"ALL000085","name":"Jackson","type":"other"},{"leg_id":"ALL000079","name":"Holmes","type":"other"},{"leg_id":"ALL000074","name":"Hall","type":"other"},{"leg_id":"ALL000038","name":"Bandy","type":"other"},{"leg_id":"ALL000123","name":"Rogers","type":"yes"},{"leg_id":"ALL000124","name":"Sanderford","type":"yes"},{"leg_id":"ALL000125","name":"Scott","type":"yes"},{"leg_id":"ALL000126","name":"Sessions","type":"yes"},{"leg_id":"ALL000145","name":"Shedd","type":"yes"},{"leg_id":"ALL000127","name":"Shiver","type":"yes"},{"leg_id":"ALL000129","name":"Todd","type":"yes"},{"leg_id":"ALL000130","name":"Treadaway","type":"yes"},{"leg_id":"ALL000131","name":"Tuggle","type":"yes"},{"leg_id":"ALL000132","name":"Vance","type":"yes"},{"leg_id":"ALL000133","name":"Wallace","type":"yes"},{"leg_id":"ALL000134","name":"Warren","type":"yes"},{"leg_id":"ALL000135","name":"Weaver","type":"yes"},{"leg_id":"ALL000136","name":"Williams
147
+ (D)","type":"yes"},{"leg_id":"ALL000137","name":"Williams (J)","type":"yes"},{"leg_id":"ALL000138","name":"Williams
148
+ (P)","type":"yes"},{"leg_id":"ALL000139","name":"Wood","type":"yes"},{"leg_id":"ALL000140","name":"Wren","type":"yes"},{"leg_id":"ALL000121","name":"Robinson
149
+ (J)","type":"no"}]},{"other_count":"7","yes_count":"97","motion":"Motion to
150
+ Adopt adopted Roll Call 637","chamber":"lower","chamber_name":"House","session":"2013rs","passed":"1","date":"2013-04-18","no_count":"0","committee":"","tally":[{"leg_id":"ALL000140","name":"Wren","type":"yes"},{"leg_id":"ALL000139","name":"Wood","type":"yes"},{"leg_id":"ALL000138","name":"Williams
151
+ (P)","type":"yes"},{"leg_id":"ALL000137","name":"Williams (J)","type":"yes"},{"leg_id":"ALL000136","name":"Williams
152
+ (D)","type":"yes"},{"leg_id":"ALL000135","name":"Weaver","type":"yes"},{"leg_id":"ALL000134","name":"Warren","type":"yes"},{"leg_id":"ALL000133","name":"Wallace","type":"yes"},{"leg_id":"ALL000132","name":"Vance","type":"yes"},{"leg_id":"ALL000131","name":"Tuggle","type":"yes"},{"leg_id":"ALL000130","name":"Treadaway","type":"yes"},{"leg_id":"ALL000129","name":"Todd","type":"yes"},{"leg_id":"ALL000142","name":"Standridge","type":"yes"},{"leg_id":"ALL000127","name":"Shiver","type":"yes"},{"leg_id":"ALL000126","name":"Sessions","type":"yes"},{"leg_id":"ALL000145","name":"Shedd","type":"yes"},{"leg_id":"ALL000125","name":"Scott","type":"yes"},{"leg_id":"ALL000124","name":"Sanderford","type":"yes"},{"leg_id":"ALL000123","name":"Rogers","type":"yes"},{"leg_id":"ALL000122","name":"Robinson
153
+ (O)","type":"yes"},{"leg_id":"ALL000121","name":"Robinson (J)","type":"yes"},{"leg_id":"ALL000120","name":"Roberts","type":"yes"},{"leg_id":"ALL000119","name":"Rich","type":"yes"},{"leg_id":"ALL000118","name":"Poole","type":"yes"},{"leg_id":"ALL000117","name":"Payne","type":"yes"},{"leg_id":"ALL000116","name":"Patterson","type":"yes"},{"leg_id":"ALL000114","name":"Nordgren","type":"yes"},{"leg_id":"ALL000112","name":"Newton
154
+ (C)","type":"yes"},{"leg_id":"ALL000111","name":"Morrow","type":"yes"},{"leg_id":"ALL000110","name":"Moore
155
+ (M)","type":"yes"},{"leg_id":"ALL000109","name":"Moore (B)","type":"yes"},{"leg_id":"ALL000107","name":"Millican","type":"yes"},{"leg_id":"ALL000106","name":"Merrill","type":"yes"},{"leg_id":"ALL000105","name":"Melton","type":"yes"},{"leg_id":"ALL000104","name":"McMillan","type":"yes"},{"leg_id":"ALL000103","name":"McCutcheon","type":"yes"},{"leg_id":"ALL000102","name":"McClurkin","type":"yes"},{"leg_id":"ALL000101","name":"McClendon","type":"yes"},{"leg_id":"ALL000100","name":"McClammy","type":"yes"},{"leg_id":"ALL000099","name":"McCampbell","type":"yes"},{"leg_id":"ALL000098","name":"McAdory","type":"yes"},{"leg_id":"ALL000097","name":"Mask","type":"yes"},{"leg_id":"ALL000096","name":"Love","type":"yes"},{"leg_id":"ALL000095","name":"Long","type":"yes"},{"leg_id":"ALL000094","name":"Lindsey","type":"yes"},{"leg_id":"ALL000093","name":"Lee","type":"yes"},{"leg_id":"ALL000092","name":"Laird","type":"yes"},{"leg_id":"ALL000091","name":"Knight","type":"yes"},{"leg_id":"ALL000089","name":"Jones","type":"yes"},{"leg_id":"ALL000088","name":"Johnson
156
+ (W)","type":"yes"},{"leg_id":"ALL000087","name":"Johnson (R)","type":"yes"},{"leg_id":"ALL000086","name":"Johnson
157
+ (K)","type":"yes"},{"leg_id":"ALL000084","name":"Ison","type":"yes"},{"leg_id":"ALL000083","name":"Hurst","type":"yes"},{"leg_id":"ALL000082","name":"Hubbard
158
+ (M)","type":"yes"},{"leg_id":"ALL000081","name":"Hubbard (J)","type":"yes"},{"leg_id":"ALL000080","name":"Howard","type":"yes"},{"leg_id":"ALL000079","name":"Holmes","type":"yes"},{"leg_id":"ALL000078","name":"Hill","type":"yes"},{"leg_id":"ALL000077","name":"Henry","type":"yes"},{"leg_id":"ALL000076","name":"Harper","type":"yes"},{"leg_id":"ALL000075","name":"Hammon","type":"yes"},{"leg_id":"ALL000074","name":"Hall","type":"yes"},{"leg_id":"ALL000073","name":"Grimsley","type":"yes"},{"leg_id":"ALL000072","name":"Greeson","type":"yes"},{"leg_id":"ALL000071","name":"Greer","type":"yes"},{"leg_id":"ALL000069","name":"Gaston","type":"yes"},{"leg_id":"ALL000067","name":"Forte","type":"yes"},{"leg_id":"ALL000066","name":"Ford","type":"yes"},{"leg_id":"ALL000065","name":"Fincher","type":"yes"},{"leg_id":"ALL000064","name":"Faust","type":"yes"},{"leg_id":"ALL000063","name":"Farley","type":"yes"},{"leg_id":"ALL000062","name":"England","type":"yes"},{"leg_id":"ALL000061","name":"Drake","type":"yes"},{"leg_id":"ALL000060","name":"DeMarco","type":"yes"},{"leg_id":"ALL000059","name":"Davis","type":"yes"},{"leg_id":"ALL000058","name":"Colston","type":"yes"},{"leg_id":"ALL000057","name":"Collins","type":"yes"},{"leg_id":"ALL000056","name":"Coleman-Evans","type":"yes"},{"leg_id":"ALL000055","name":"Clouse","type":"yes"},{"leg_id":"ALL000054","name":"Chesteen","type":"yes"},{"leg_id":"ALL000053","name":"Carns","type":"yes"},{"leg_id":"ALL000052","name":"Buttram","type":"yes"},{"leg_id":"ALL000141","name":"Butler","type":"yes"},{"leg_id":"ALL000051","name":"Buskey","type":"yes"},{"leg_id":"ALL000050","name":"Burdine","type":"yes"},{"leg_id":"ALL000049","name":"Brown","type":"yes"},{"leg_id":"ALL000048","name":"Bridges","type":"yes"},{"leg_id":"ALL000047","name":"Bracy","type":"yes"},{"leg_id":"ALL000046","name":"Boyd","type":"yes"},{"leg_id":"ALL000045","name":"Boothe","type":"yes"},{"leg_id":"ALL000042","name":"Beech","type":"yes"},{"leg_id":"ALL000041","name":"Beckman","type":"yes"},{"leg_id":"ALL000040","name":"Baughn","type":"yes"},{"leg_id":"ALL000039","name":"Barton","type":"yes"},{"leg_id":"ALL000038","name":"Bandy","type":"yes"},{"leg_id":"ALL000036","name":"Baker","type":"yes"},{"leg_id":"ALL000113","name":"Newton
159
+ (D)","type":"other"},{"leg_id":"ALL000108","name":"Mitchell","type":"other"},{"leg_id":"ALL000085","name":"Jackson","type":"other"},{"leg_id":"ALL000070","name":"Givan","type":"other"},{"leg_id":"ALL000044","name":"Boman","type":"other"},{"leg_id":"ALL000043","name":"Black","type":"other"},{"leg_id":"ALL000037","name":"Ball","type":"other"}]}],"sponsors":[{"leg_id":"ALL000139","updated_at":"2013-09-25
160
+ 00:04:51","full_name":"Randy Wood","first_name":"Randy","middle_name":"","last_name":"Wood","district":"36","office_address":"Room
161
+ 120\n11 S. Union Street\nMontgomery, AL 36130","state_abbreviation":"al","votesmart_id":"27617","party":"Republican","email":"","photo_url":"http:\/\/www.legislature.state.al.us\/graphics\/housepics\/wood_r.jpeg","roles":[{"term":"2011-2014","end_date":null,"district":"36","chamber":"lower","state":"al","party":"Republican","type":"member","start_date":null},{"term":"2011-2014","committee_id":"ALC000014","end_date":null,"chamber":"lower","state":"al","committee":"Rules","position":"member","type":"committee
162
+ member","start_date":null},{"term":"2011-2014","committee_id":"ALC000006","end_date":null,"chamber":"lower","state":"al","committee":"Constitutions,
163
+ Campaigns and Elections","position":"vice chair","type":"committee member","start_date":null},{"term":"2011-2014","committee_id":"ALC000067","end_date":null,"chamber":"lower","state":"al","committee":"County
164
+ and Municipal Government","position":"vice chair","type":"committee member","start_date":null}],"old_roles":"","url":"http:\/\/www.legislature.state.al.us\/house\/representatives\/housebios\/hd036.html","chamber":"lower","chamber_name":"House","offices":[{"fax":null,"name":"Capitol
165
+ Office","phone":"334-242-7700","address":"Room 424\n11 S. Union Street\nMontgomery,
166
+ AL 36130","type":"capitol","email":null}],"country":"us","office_phone":"334-242-7700"}],"versions":[{"mimetype":"application\/pdf","url":"http:\/\/alisondb.legislature.state.al.us\/acas\/searchableinstruments\/2013rs\/PrintFiles\/HB119-int.pdf","doc_id":"ALD00013146","name":"introduced","title":""}]}'
167
+ http_version:
168
+ recorded_at: Wed, 25 Sep 2013 17:39:50 GMT
169
+ recorded_with: VCR 2.5.0
@@ -0,0 +1,62 @@
1
+ require 'spec_helper'
2
+ require './lib/ael_tracker/bill'
3
+
4
+ describe AelTracker::Bill do
5
+ it "must include httparty methods" do
6
+ expect( AelTracker::Bill ).to include HTTParty
7
+ end
8
+
9
+ it "must have the base url set to the AelTracker API endpoint" do
10
+ expect( AelTracker::Bill.base_uri ).to eq 'http://www.aeltracker.org/api'
11
+ end
12
+
13
+ describe "GET bill" do
14
+
15
+ let(:bill) { AelTracker::Bill.new(1) }
16
+
17
+ before(:all) do
18
+ VCR.insert_cassette 'bill', :record => :new_episodes
19
+ end
20
+
21
+ after(:all) do
22
+ VCR.eject_cassette
23
+ end
24
+
25
+ it "must have an profile method" do
26
+ expect( bill ).to respond_to :profile
27
+ end
28
+
29
+ it "must parse the api response from JSON to HASH" do
30
+ expect( bill.profile ).to be_an_instance_of( Hash )
31
+ end
32
+
33
+ it "records the fixture" do
34
+ expect( bill.profile["bill_id"] ).to eq "1"
35
+ end
36
+
37
+ end
38
+
39
+ describe "dynamic attributes" do
40
+
41
+ let(:bill) { AelTracker::Bill.new(1) }
42
+
43
+ before(:all) do
44
+ VCR.insert_cassette 'bill', :record => :new_episodes
45
+ end
46
+
47
+ after(:all) do
48
+ VCR.eject_cassette
49
+ end
50
+
51
+ it "must return the attribute value if present in profile" do
52
+ bill.profile
53
+ expect( bill.id ).to eq 1
54
+ end
55
+
56
+ it "must raise method missing if attribute is not present" do
57
+ bill.profile
58
+ expect( lambda { bill.foo_attribute } ).to raise_error( NoMethodError )
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,10 @@
1
+ require 'rspec'
2
+ require 'webmock/rspec'
3
+ require 'vcr'
4
+
5
+
6
+ #VCR config
7
+ VCR.configure do |c|
8
+ c.cassette_library_dir = 'spec/fixtures/cassettes'
9
+ c.hook_into :webmock
10
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ael_tracker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Bradley Sheehan
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-09-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: vcr
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: webmock
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: httparty
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: json
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: bundler
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: 'A little gem that integrates with the AelTracker API. From the official
112
+ site: http://www.aeltracker.org/api. The AelTracker (i.e. Advanced Energy Legislation
113
+ Tracker) API provides methods for obtaining basic information about advanced energy
114
+ legislation.'
115
+ email:
116
+ - bradpsheehan@gmail.com
117
+ executables: []
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - .gitignore
122
+ - Gemfile
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - ael_tracker.gemspec
127
+ - lib/ael_tracker.rb
128
+ - lib/ael_tracker/bill.rb
129
+ - lib/ael_tracker/version.rb
130
+ - spec/fixtures/cassettes/bill.yml
131
+ - spec/lib/bill_spec.rb
132
+ - spec/spec_helper.rb
133
+ homepage: ''
134
+ licenses:
135
+ - MIT
136
+ metadata: {}
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ requirements: []
152
+ rubyforge_project:
153
+ rubygems_version: 2.0.3
154
+ signing_key:
155
+ specification_version: 4
156
+ summary: Ruby wrapper for Advanced Energy Legislation Tracker API.
157
+ test_files:
158
+ - spec/fixtures/cassettes/bill.yml
159
+ - spec/lib/bill_spec.rb
160
+ - spec/spec_helper.rb