ohanakapa 1.0.0

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.
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: