govkit 0.0.0.pre → 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.0.pre
1
+ 0.0.1
@@ -10,7 +10,7 @@ class GovkitGenerator < Rails::Generator::Base
10
10
  m.template 'govkit.rb', File.join('config', 'initializers', 'govkit.rb')
11
11
  end
12
12
  end
13
-
13
+
14
14
  protected
15
15
 
16
16
  def banner
@@ -0,0 +1,9 @@
1
+ if defined? Govkit
2
+
3
+ Govkit.configure do |config|
4
+ # Get an API key for Sunlight's Fifty States project here:
5
+ # http://services.sunlightlabs.com/accounts/register/
6
+ config.fiftystates_apikey = 'YOUR_FIFTYSTATES_API_KEY'
7
+ end
8
+
9
+ end
data/govkit.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{govkit}
8
- s.version = "0.0.0.pre"
8
+ s.version = "0.0.1"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Participatory Politics Foundation", "Srinivas Aki", "Carl Tashian"]
12
- s.date = %q{2010-04-28}
12
+ s.date = %q{2010-05-10}
13
13
  s.description = %q{Govkit lets you quickly get encapsulated Ruby objects for common open government APIs. We're starting with Sunlight's Fifty States API and the Project Vote Smart API.}
14
14
  s.email = %q{carl@ppolitics.org}
15
15
  s.extra_rdoc_files = [
@@ -24,18 +24,26 @@ Gem::Specification.new do |s|
24
24
  "Rakefile",
25
25
  "USAGE",
26
26
  "VERSION",
27
- "generators/govkit_generator.rb",
28
- "generators/templates/govkit.rb",
27
+ "generators/govkit/govkit_generator.rb",
28
+ "generators/govkit/templates/govkit.rb",
29
29
  "govkit.gemspec",
30
30
  "lib/govkit.rb",
31
+ "lib/govkit/configuration.rb",
31
32
  "lib/govkit/fifty_states.rb",
32
- "rails/init.rb"
33
+ "rails/init.rb",
34
+ "spec/fifty_states_spec.rb",
35
+ "spec/spec.opts",
36
+ "spec/spec_helper.rb"
33
37
  ]
34
38
  s.homepage = %q{http://github.com/opengovernment/govkit}
35
39
  s.rdoc_options = ["--charset=UTF-8"]
36
40
  s.require_paths = ["lib"]
37
41
  s.rubygems_version = %q{1.3.6}
38
42
  s.summary = %q{Simple access to open government APIs around the web}
43
+ s.test_files = [
44
+ "spec/fifty_states_spec.rb",
45
+ "spec/spec_helper.rb"
46
+ ]
39
47
 
40
48
  if s.respond_to? :specification_version then
41
49
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
@@ -0,0 +1,25 @@
1
+ module Govkit
2
+ class Configuration
3
+ attr_accessor :fiftystates_apikey, :fiftystates_base_url
4
+
5
+ def initialize
6
+ @fiftystates_apikey = ''
7
+ @fiftystates_base_url = 'fiftystates-dev.sunlightlabs.com/api'
8
+ end
9
+ end
10
+
11
+ class << self
12
+ attr_accessor :configuration
13
+ end
14
+
15
+ # Configure Govkit in config/initializers/govkit.rb
16
+ #
17
+ # @example
18
+ # Govkit.configure do |config|
19
+ # config.fiftystates_apikey = ''
20
+ # end
21
+ def self.configure
22
+ self.configuration ||= Configuration.new
23
+ yield(configuration)
24
+ end
25
+ end
@@ -35,8 +35,8 @@ module Govkit::FiftyStates
35
35
  class Base
36
36
  include HTTParty
37
37
  format :json
38
- default_params :output => 'json'
39
- base_uri 'fiftystates-dev.sunlightlabs.com/api'
38
+ default_params :output => 'json', :apikey => Govkit::configuration.fiftystates_apikey
39
+ base_uri Govkit::configuration.fiftystates_base_url
40
40
 
41
41
  attr_accessor :attributes
42
42
 
@@ -53,6 +53,10 @@ module Govkit::FiftyStates
53
53
  def instantiate_collection(collection)
54
54
  collection.collect! { |record| instantiate_record(record) }
55
55
  end
56
+
57
+ def parse(json)
58
+ instantiate_record(json)
59
+ end
56
60
  end
57
61
 
58
62
  def unload(attributes)
@@ -167,7 +171,14 @@ module Govkit::FiftyStates
167
171
 
168
172
  class Action < Base; end
169
173
 
170
- class Vote < Base; end
174
+ class Vote < Base
175
+ def self.find(vote_id)
176
+ response = get("/votes/#{vote_id}")
177
+ instantiate_record(response)
178
+ end
179
+ end
180
+
181
+ class Roll < Base; end
171
182
 
172
183
  class Sponsor < Base; end
173
184
 
data/lib/govkit.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
2
2
 
3
3
  require 'active_support'
4
+ require 'govkit/configuration'
4
5
 
5
6
  module Govkit
6
7
  autoload :FiftyStates, 'govkit/fifty_states'
@@ -0,0 +1,90 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ #TODO: Mock http requests, rather than making an actual call to the api
4
+
5
+ module Govkit::FiftyStates
6
+ describe Govkit::FiftyStates do
7
+ it "should have the base uri set properly" do
8
+ [State, Bill, Legislator].each do |klass|
9
+ klass.base_uri.should == "http://fiftystates-dev.sunlightlabs.com/api"
10
+ end
11
+ end
12
+ end
13
+
14
+ describe State do
15
+ context "#find_by_abbreviation" do
16
+ before do
17
+ #TODO: Mock request for State
18
+ end
19
+ it "should find a state by abbreviation" do
20
+ lambda do
21
+ @state = State.find_by_abbreviation('ca')
22
+ end.should_not raise_error
23
+
24
+ @state.should_not be_nil
25
+ @state.name.should == "California"
26
+ end
27
+ end
28
+ end
29
+
30
+ describe Bill do
31
+ context "#find" do
32
+ before do
33
+ #TODO: Mock request for Bill
34
+ end
35
+
36
+ it "should find a bill by stat abbreviation, session, chamber, bill_id" do
37
+ lambda do
38
+ @bill = Bill.find('ca', 20092010, 'lower', 'AB667')
39
+ end.should_not raise_error
40
+
41
+ @bill.should_not be_nil
42
+ @bill.title.should include("An act to amend Section 1750.1 of the Business and Professions Code, and to amend Section 104830 of")
43
+ end
44
+ end
45
+
46
+ context "#search" do
47
+ it "should find bills by given criteria" do
48
+ @bills = Bill.search('agriculture')
49
+
50
+ @bills.should_not be_nil
51
+ @bills.collect(&:bill_id).should include("S 0438")
52
+ end
53
+ end
54
+
55
+ context "#latest" do
56
+ it "should get the latest bills by given criteria" do
57
+ lambda do
58
+ @latest = Bill.latest('2010-01-01','sd')
59
+ end.should_not raise_error
60
+
61
+ @latest.collect(&:bill_id).should include("SB 7")
62
+ end
63
+ end
64
+ end
65
+
66
+ describe Legislator do
67
+ before do
68
+ #TODO: Mock request for legislator
69
+ end
70
+ context "#find" do
71
+ it "should get the latest bill" do
72
+ lambda do
73
+ @legislator = Legislator.find(2462)
74
+ end.should_not raise_error
75
+
76
+ @legislator.first_name.should == "Dave"
77
+ @legislator.last_name.should == "Cox"
78
+ end
79
+ end
80
+ context "#search" do
81
+ it "should get legislators by given criteria" do
82
+ lambda do
83
+ @legislators = Legislator.search(:state => 'ca')
84
+ end.should_not raise_error
85
+
86
+ @legislators.should_not be_nil
87
+ end
88
+ end
89
+ end
90
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format nested
3
+ --loadby
4
+ mtime
5
+ --reverse
6
+ --backtrace
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require File.dirname(__FILE__) + '/../lib/govkit'
4
+
5
+ # prevent the use of `` in tests
6
+ Spec::Runner.configure do |configuration|
7
+ end
8
+
9
+ # When running specs in TextMate, provide an rputs method to cleanly print objects into HTML display
10
+ # From http://talklikeaduck.denhaven2.com/2009/09/23/rspec-textmate-pro-tip
11
+ module Kernel
12
+ if ENV.keys.find {|env_var| env_var.index("TM_")}
13
+ def rputs(*args)
14
+ require 'cgi'
15
+ puts( *["<pre>", args.collect {|a| CGI.escapeHTML(a.to_s)}, "</pre>"])
16
+ end
17
+ def rp(*args)
18
+ require 'cgi'
19
+ puts( *["<pre>", args.collect {|a| CGI.escapeHTML(a.inspect)}, "</pre>"])
20
+ end
21
+ else
22
+ alias_method :rputs, :puts
23
+ alias_method :rp, :p
24
+ end
25
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govkit
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: true
4
+ prerelease: false
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 0
9
- - pre
10
- version: 0.0.0.pre
8
+ - 1
9
+ version: 0.0.1
11
10
  platform: ruby
12
11
  authors:
13
12
  - Participatory Politics Foundation
@@ -17,7 +16,7 @@ autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
18
 
20
- date: 2010-04-28 00:00:00 -07:00
19
+ date: 2010-05-10 00:00:00 -07:00
21
20
  default_executable:
22
21
  dependencies:
23
22
  - !ruby/object:Gem::Dependency
@@ -65,12 +64,16 @@ files:
65
64
  - Rakefile
66
65
  - USAGE
67
66
  - VERSION
68
- - generators/govkit_generator.rb
69
- - generators/templates/govkit.rb
67
+ - generators/govkit/govkit_generator.rb
68
+ - generators/govkit/templates/govkit.rb
70
69
  - govkit.gemspec
71
70
  - lib/govkit.rb
71
+ - lib/govkit/configuration.rb
72
72
  - lib/govkit/fifty_states.rb
73
73
  - rails/init.rb
74
+ - spec/fifty_states_spec.rb
75
+ - spec/spec.opts
76
+ - spec/spec_helper.rb
74
77
  has_rdoc: true
75
78
  homepage: http://github.com/opengovernment/govkit
76
79
  licenses: []
@@ -89,13 +92,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
92
  version: "0"
90
93
  required_rubygems_version: !ruby/object:Gem::Requirement
91
94
  requirements:
92
- - - ">"
95
+ - - ">="
93
96
  - !ruby/object:Gem::Version
94
97
  segments:
95
- - 1
96
- - 3
97
- - 1
98
- version: 1.3.1
98
+ - 0
99
+ version: "0"
99
100
  requirements: []
100
101
 
101
102
  rubyforge_project:
@@ -103,5 +104,6 @@ rubygems_version: 1.3.6
103
104
  signing_key:
104
105
  specification_version: 3
105
106
  summary: Simple access to open government APIs around the web
106
- test_files: []
107
-
107
+ test_files:
108
+ - spec/fifty_states_spec.rb
109
+ - spec/spec_helper.rb
@@ -1,12 +0,0 @@
1
- if defined? Govkit
2
-
3
- # Get an API key for Sunlight's Fifty States project here:
4
- # http://services.sunlightlabs.com/accounts/register/
5
- Govkit::FiftyStates::apikey = 'YOUR_FIFTYSTATES_API_KEY'
6
-
7
- # Get a key for the VoteSmart API here:
8
- # http://votesmart.org/services_api.php
9
- Govkit::Votesmart::apikey = 'YOUR_VOTESMART_API_KEY'
10
-
11
-
12
- end