ohanakapa 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +7 -0
  2. data/lib/ohanakapa.rb +33 -0
  3. data/lib/ohanakapa/arguments.rb +14 -0
  4. data/lib/ohanakapa/authentication.rb +25 -0
  5. data/lib/ohanakapa/client.rb +226 -0
  6. data/lib/ohanakapa/client/categories.rb +42 -0
  7. data/lib/ohanakapa/client/keywords.rb +24 -0
  8. data/lib/ohanakapa/client/locations.rb +67 -0
  9. data/lib/ohanakapa/client/organizations.rb +43 -0
  10. data/lib/ohanakapa/client/rate_limit.rb +34 -0
  11. data/lib/ohanakapa/client/search.rb +23 -0
  12. data/lib/ohanakapa/configurable.rb +78 -0
  13. data/lib/ohanakapa/default.rb +88 -0
  14. data/lib/ohanakapa/error.rb +130 -0
  15. data/lib/ohanakapa/rate_limit.rb +31 -0
  16. data/lib/ohanakapa/response/raise_error.rb +21 -0
  17. data/lib/ohanakapa/version.rb +6 -0
  18. data/spec/cassettes/Ohanakapa_Client/_get/handles_query_params.json +1 -0
  19. data/spec/cassettes/Ohanakapa_Client/_head/handles_query_params.json +1 -0
  20. data/spec/cassettes/Ohanakapa_Client/_last_response/caches_the_last_agent_response.json +1 -0
  21. data/spec/cassettes/Ohanakapa_Client/auto_pagination/fetches_all_the_pages.json +1 -0
  22. data/spec/cassettes/Ohanakapa_Client_Categories/_add_keywords_to_a_service/adds_keywords_to_a_given_service.json +1 -0
  23. data/spec/cassettes/Ohanakapa_Client_Categories/_categories/returns_all_categories.json +1 -0
  24. data/spec/cassettes/Ohanakapa_Client_Categories/_replace_all_categories/replaces_all_categories_for_a_service.json +1 -0
  25. data/spec/cassettes/Ohanakapa_Client_Locations/_location/returns_an_location.json +1 -0
  26. data/spec/cassettes/Ohanakapa_Client_Locations/_locations/returns_all_locations.json +1 -0
  27. data/spec/cassettes/Ohanakapa_Client_Locations/_nearby/returns_locations_near_the_queried_location.json +1 -0
  28. data/spec/cassettes/Ohanakapa_Client_Locations/_update_location/updates_a_location_s_attributes.json +1 -0
  29. data/spec/cassettes/Ohanakapa_Client_Organizations/_organization/returns_an_organization.json +1 -0
  30. data/spec/cassettes/Ohanakapa_Client_Organizations/_organizations/returns_all_organizations.json +1 -0
  31. data/spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_keyword_food_and_language_Spanish_.json +1 -0
  32. data/spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_keyword_market_.json +1 -0
  33. data/spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_location_san_mateo_ca_.json +1 -0
  34. data/spec/cassettes/rate_limit.json +1 -0
  35. data/spec/cassettes/root.json +1 -0
  36. data/spec/ohanakapa/client/categories_spec.rb +27 -0
  37. data/spec/ohanakapa/client/keywords_spec.rb +20 -0
  38. data/spec/ohanakapa/client/locations_spec.rb +41 -0
  39. data/spec/ohanakapa/client/organizations_spec.rb +23 -0
  40. data/spec/ohanakapa/client/rate_limit_spec.rb +40 -0
  41. data/spec/ohanakapa/client/search_spec.rb +38 -0
  42. data/spec/ohanakapa/client_spec.rb +363 -0
  43. data/spec/ohanakapa/rate_limit_spec.rb +25 -0
  44. data/spec/ohanakapa_spec.rb +46 -0
  45. data/spec/spec_helper.rb +88 -0
  46. metadata +146 -0
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+ require 'ohanakapa/rate_limit'
3
+
4
+ describe Ohanakapa::RateLimit do
5
+
6
+ it "parses rate limit info from response headers" do
7
+ response = double()
8
+ response.should_receive(:headers).
9
+ at_least(:once).
10
+ and_return({
11
+ "X-RateLimit-Limit" => 60,
12
+ "X-RateLimit-Remaining" => 42
13
+ })
14
+ info = Ohanakapa::RateLimit.from_response(response)
15
+ expect(info.limit).to eq 60
16
+ expect(info.remaining).to eq 42
17
+ end
18
+
19
+ it "handles nil responses" do
20
+ info = Ohanakapa::RateLimit.from_response(nil)
21
+ expect(info.limit).to be_nil
22
+ expect(info.remaining).to be_nil
23
+ end
24
+
25
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Ohanakapa do
4
+ before do
5
+ Ohanakapa.reset!
6
+ end
7
+
8
+ after do
9
+ Ohanakapa.reset!
10
+ end
11
+
12
+ it "sets defaults" do
13
+ Ohanakapa::Configurable.keys.each do |key|
14
+ expect(Ohanakapa.instance_variable_get(:"@#{key}")).to eq Ohanakapa::Default.send(key)
15
+ end
16
+ end
17
+
18
+ describe ".client" do
19
+ it "creates an Ohanakapa::Client" do
20
+ expect(Ohanakapa.client).to be_kind_of Ohanakapa::Client
21
+ end
22
+ it "caches the client when the same options are passed" do
23
+ expect(Ohanakapa.client).to eq Ohanakapa.client
24
+ end
25
+ it "returns a fresh client when options are not the same" do
26
+ client = Ohanakapa.client
27
+ Ohanakapa.api_token = '87614b09dd141c22800f96f11737ade5' #fake token
28
+ client_two = Ohanakapa.client
29
+ client_three = Ohanakapa.client
30
+ expect(client).to_not eq client_two
31
+ expect(client_three).to eq client_two
32
+ end
33
+ end
34
+
35
+ describe ".configure" do
36
+ Ohanakapa::Configurable.keys.each do |key|
37
+ it "sets the #{key.to_s.gsub('_', ' ')}" do
38
+ Ohanakapa.configure do |config|
39
+ config.send("#{key}=", key)
40
+ end
41
+ expect(Ohanakapa.instance_variable_get(:"@#{key}")).to eq key
42
+ end
43
+ end
44
+ end
45
+
46
+ end
@@ -0,0 +1,88 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ require 'json'
11
+ require 'ohanakapa'
12
+ require 'rspec'
13
+ require 'webmock/rspec'
14
+
15
+ WebMock.disable_net_connect!(:allow => 'coveralls.io')
16
+
17
+ RSpec.configure do |config|
18
+ config.treat_symbols_as_metadata_keys_with_true_values = true
19
+ end
20
+
21
+ require 'vcr'
22
+ VCR.configure do |c|
23
+ c.configure_rspec_metadata!
24
+ c.filter_sensitive_data("<<API_TOKEN>>") do
25
+ ENV['OHANAKAPA_TEST_API_TOKEN']
26
+ end
27
+ c.default_cassette_options = {
28
+ :serialize_with => :json,
29
+ :preserve_exact_body_bytes => true,
30
+ :decode_compressed_response => true,
31
+ :record => ENV['TRAVIS'] ? :none : :once
32
+ }
33
+ c.cassette_library_dir = 'spec/cassettes'
34
+ c.hook_into :webmock
35
+ end
36
+
37
+ def test_api_token
38
+ ENV.fetch 'OHANAKAPA_TEST_API_TOKEN'
39
+ end
40
+
41
+ def stub_delete(url)
42
+ stub_request(:delete, ohana_url(url))
43
+ end
44
+
45
+ def stub_get(url)
46
+ stub_request(:get, ohana_url(url))
47
+ end
48
+
49
+ def stub_head(url)
50
+ stub_request(:head, ohana_url(url))
51
+ end
52
+
53
+ def stub_patch(url)
54
+ stub_request(:patch, ohana_url(url))
55
+ end
56
+
57
+ def stub_post(url)
58
+ stub_request(:post, ohana_url(url))
59
+ end
60
+
61
+ def stub_put(url)
62
+ stub_request(:put, ohana_url(url))
63
+ end
64
+
65
+ def fixture_path
66
+ File.expand_path("../fixtures", __FILE__)
67
+ end
68
+
69
+ def fixture(file)
70
+ File.new(fixture_path + '/' + file)
71
+ end
72
+
73
+ def json_response(file)
74
+ {
75
+ :body => fixture(file),
76
+ :headers => {
77
+ :content_type => 'application/json; charset=utf-8'
78
+ }
79
+ }
80
+ end
81
+
82
+ def ohana_url(url)
83
+ url =~ /^http/ ? url : "http://ohanapi.herokuapp.com/api#{url}"
84
+ end
85
+
86
+ def api_token_client
87
+ Ohanakapa::Client.new(:api_token => test_api_token)
88
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ohanakapa
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Anselm Bradford
8
+ - Moncef Belyamani
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sawyer
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: 0.3.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 0.3.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: bundler
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '1.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.0'
42
+ description: A Ruby wrapper for the Ohana API.
43
+ email:
44
+ - ohana@codeforamerica.org
45
+ executables: []
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - lib/ohanakapa/arguments.rb
50
+ - lib/ohanakapa/authentication.rb
51
+ - lib/ohanakapa/client/categories.rb
52
+ - lib/ohanakapa/client/keywords.rb
53
+ - lib/ohanakapa/client/locations.rb
54
+ - lib/ohanakapa/client/organizations.rb
55
+ - lib/ohanakapa/client/rate_limit.rb
56
+ - lib/ohanakapa/client/search.rb
57
+ - lib/ohanakapa/client.rb
58
+ - lib/ohanakapa/configurable.rb
59
+ - lib/ohanakapa/default.rb
60
+ - lib/ohanakapa/error.rb
61
+ - lib/ohanakapa/rate_limit.rb
62
+ - lib/ohanakapa/response/raise_error.rb
63
+ - lib/ohanakapa/version.rb
64
+ - lib/ohanakapa.rb
65
+ - spec/cassettes/Ohanakapa_Client/_get/handles_query_params.json
66
+ - spec/cassettes/Ohanakapa_Client/_head/handles_query_params.json
67
+ - spec/cassettes/Ohanakapa_Client/_last_response/caches_the_last_agent_response.json
68
+ - spec/cassettes/Ohanakapa_Client/auto_pagination/fetches_all_the_pages.json
69
+ - spec/cassettes/Ohanakapa_Client_Categories/_add_keywords_to_a_service/adds_keywords_to_a_given_service.json
70
+ - spec/cassettes/Ohanakapa_Client_Categories/_categories/returns_all_categories.json
71
+ - spec/cassettes/Ohanakapa_Client_Categories/_replace_all_categories/replaces_all_categories_for_a_service.json
72
+ - spec/cassettes/Ohanakapa_Client_Locations/_location/returns_an_location.json
73
+ - spec/cassettes/Ohanakapa_Client_Locations/_locations/returns_all_locations.json
74
+ - spec/cassettes/Ohanakapa_Client_Locations/_nearby/returns_locations_near_the_queried_location.json
75
+ - spec/cassettes/Ohanakapa_Client_Locations/_update_location/updates_a_location_s_attributes.json
76
+ - spec/cassettes/Ohanakapa_Client_Organizations/_organization/returns_an_organization.json
77
+ - spec/cassettes/Ohanakapa_Client_Organizations/_organizations/returns_all_organizations.json
78
+ - spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_keyword_food_and_language_Spanish_.json
79
+ - spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_keyword_market_.json
80
+ - spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_location_san_mateo_ca_.json
81
+ - spec/cassettes/rate_limit.json
82
+ - spec/cassettes/root.json
83
+ - spec/ohanakapa/client/categories_spec.rb
84
+ - spec/ohanakapa/client/keywords_spec.rb
85
+ - spec/ohanakapa/client/locations_spec.rb
86
+ - spec/ohanakapa/client/organizations_spec.rb
87
+ - spec/ohanakapa/client/rate_limit_spec.rb
88
+ - spec/ohanakapa/client/search_spec.rb
89
+ - spec/ohanakapa/client_spec.rb
90
+ - spec/ohanakapa/rate_limit_spec.rb
91
+ - spec/ohanakapa_spec.rb
92
+ - spec/spec_helper.rb
93
+ homepage: https://github.com/codeforamerica/ohanakapa
94
+ licenses:
95
+ - MIT
96
+ metadata: {}
97
+ post_install_message: Connect to Ohana. Connect your Community.
98
+ rdoc_options: []
99
+ require_paths:
100
+ - lib
101
+ required_ruby_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ required_rubygems_version: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: 1.3.5
111
+ requirements: []
112
+ rubyforge_project:
113
+ rubygems_version: 2.0.3
114
+ signing_key:
115
+ specification_version: 4
116
+ summary: A Ruby wrapper for the Ohana API.
117
+ test_files:
118
+ - spec/cassettes/Ohanakapa_Client/_get/handles_query_params.json
119
+ - spec/cassettes/Ohanakapa_Client/_head/handles_query_params.json
120
+ - spec/cassettes/Ohanakapa_Client/_last_response/caches_the_last_agent_response.json
121
+ - spec/cassettes/Ohanakapa_Client/auto_pagination/fetches_all_the_pages.json
122
+ - spec/cassettes/Ohanakapa_Client_Categories/_add_keywords_to_a_service/adds_keywords_to_a_given_service.json
123
+ - spec/cassettes/Ohanakapa_Client_Categories/_categories/returns_all_categories.json
124
+ - spec/cassettes/Ohanakapa_Client_Categories/_replace_all_categories/replaces_all_categories_for_a_service.json
125
+ - spec/cassettes/Ohanakapa_Client_Locations/_location/returns_an_location.json
126
+ - spec/cassettes/Ohanakapa_Client_Locations/_locations/returns_all_locations.json
127
+ - spec/cassettes/Ohanakapa_Client_Locations/_nearby/returns_locations_near_the_queried_location.json
128
+ - spec/cassettes/Ohanakapa_Client_Locations/_update_location/updates_a_location_s_attributes.json
129
+ - spec/cassettes/Ohanakapa_Client_Organizations/_organization/returns_an_organization.json
130
+ - spec/cassettes/Ohanakapa_Client_Organizations/_organizations/returns_all_organizations.json
131
+ - spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_keyword_food_and_language_Spanish_.json
132
+ - spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_keyword_market_.json
133
+ - spec/cassettes/Ohanakapa_Client_Search/_search/searches_for_location_san_mateo_ca_.json
134
+ - spec/cassettes/rate_limit.json
135
+ - spec/cassettes/root.json
136
+ - spec/ohanakapa/client/categories_spec.rb
137
+ - spec/ohanakapa/client/keywords_spec.rb
138
+ - spec/ohanakapa/client/locations_spec.rb
139
+ - spec/ohanakapa/client/organizations_spec.rb
140
+ - spec/ohanakapa/client/rate_limit_spec.rb
141
+ - spec/ohanakapa/client/search_spec.rb
142
+ - spec/ohanakapa/client_spec.rb
143
+ - spec/ohanakapa/rate_limit_spec.rb
144
+ - spec/ohanakapa_spec.rb
145
+ - spec/spec_helper.rb
146
+ has_rdoc: