action_kit_rest 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +26 -0
  3. data/.travis.yml +7 -1
  4. data/Gemfile +11 -9
  5. data/Rakefile +15 -18
  6. data/action_kit_rest.gemspec +30 -26
  7. data/lib/action_kit_rest.rb +2 -0
  8. data/lib/action_kit_rest/action.rb +3 -1
  9. data/lib/action_kit_rest/actions/event_create_action.rb +5 -3
  10. data/lib/action_kit_rest/actions/event_signup_action.rb +6 -3
  11. data/lib/action_kit_rest/actions/unsubscribe_action.rb +3 -1
  12. data/lib/action_kit_rest/allowed_user_field.rb +3 -1
  13. data/lib/action_kit_rest/api.rb +9 -7
  14. data/lib/action_kit_rest/base.rb +5 -4
  15. data/lib/action_kit_rest/client.rb +5 -3
  16. data/lib/action_kit_rest/event.rb +3 -1
  17. data/lib/action_kit_rest/event_signup.rb +3 -1
  18. data/lib/action_kit_rest/language.rb +3 -1
  19. data/lib/action_kit_rest/list.rb +3 -1
  20. data/lib/action_kit_rest/page.rb +4 -2
  21. data/lib/action_kit_rest/pages/base.rb +4 -5
  22. data/lib/action_kit_rest/pages/donation_page.rb +3 -1
  23. data/lib/action_kit_rest/pages/event_campaign_page.rb +4 -2
  24. data/lib/action_kit_rest/pages/import_page.rb +3 -1
  25. data/lib/action_kit_rest/pages/signup_page.rb +3 -1
  26. data/lib/action_kit_rest/pages/unsubscribe_page.rb +3 -1
  27. data/lib/action_kit_rest/phone.rb +2 -0
  28. data/lib/action_kit_rest/railties.rb +3 -1
  29. data/lib/action_kit_rest/response/collection.rb +4 -4
  30. data/lib/action_kit_rest/response/raise_error.rb +15 -12
  31. data/lib/action_kit_rest/response/validation_error.rb +8 -8
  32. data/lib/action_kit_rest/response/wrapper.rb +10 -10
  33. data/lib/action_kit_rest/tag.rb +6 -6
  34. data/lib/action_kit_rest/user.rb +3 -1
  35. data/lib/action_kit_rest/version.rb +3 -1
  36. data/spec/lib/action_kit_rest/actions/event_create_action_spec.rb +6 -4
  37. data/spec/lib/action_kit_rest/actions/event_signup_action_spec.rb +6 -4
  38. data/spec/lib/action_kit_rest/allowed_user_field_spec.rb +9 -7
  39. data/spec/lib/action_kit_rest/logger_spec.rb +7 -5
  40. data/spec/lib/action_kit_rest/page_spec.rb +28 -28
  41. data/spec/lib/action_kit_rest/pages/event_campaign_page_spec.rb +25 -20
  42. data/spec/lib/action_kit_rest/pages/import_page_spec.rb +21 -17
  43. data/spec/lib/action_kit_rest/response/collection_spec.rb +13 -11
  44. data/spec/lib/action_kit_rest/response/validation_error_spec.rb +6 -4
  45. data/spec/lib/action_kit_rest/response/wrapper_spec.rb +6 -4
  46. data/spec/lib/action_kit_rest/user_spec.rb +11 -9
  47. data/spec/spec_helper.rb +6 -4
  48. data/spec/support/shared_contexts/stub_logger.rb +4 -2
  49. metadata +65 -56
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class Language < Base
3
5
  def base_path
@@ -9,4 +11,4 @@ module ActionKitRest
9
11
  response.obj.first
10
12
  end
11
13
  end
12
- end
14
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class List < Base
3
5
  def base_path
@@ -9,4 +11,4 @@ module ActionKitRest
9
11
  response.obj.first
10
12
  end
11
13
  end
12
- end
14
+ end
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class Page < Vertebrae::Model
3
5
  def list
4
- client.get_request("page/")
6
+ client.get_request('page/')
5
7
  end
6
8
 
7
9
  def get(id)
8
10
  client.get_request("page/#{id}/")
9
11
  end
10
12
  end
11
- end
13
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Pages
3
5
  class Base < ActionKitRest::Base
@@ -6,15 +8,12 @@ module ActionKitRest
6
8
  response = list(name: name)
7
9
  response.obj.first
8
10
  end
9
-
11
+
10
12
  def find_or_create(params)
11
13
  page = find(params[:name])
12
- if page.blank?
13
- page = create(params)
14
- end
14
+ page = create(params) if page.blank?
15
15
  page
16
16
  end
17
17
  end
18
18
  end
19
19
  end
20
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Pages
3
5
  class DonationPage < ActionKitRest::Pages::Base
@@ -6,4 +8,4 @@ module ActionKitRest
6
8
  end
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Pages
3
5
  class EventCampaignPage < ActionKitRest::Pages::Base
@@ -41,7 +43,7 @@ module ActionKitRest
41
43
 
42
44
  def create_event_create_page(event_campaign, tags)
43
45
  params = event_create_page_params(event_campaign, tags)
44
- response = client.post_json_request('eventcreatepage/', params)
46
+ _response = client.post_json_request('eventcreatepage/', params)
45
47
 
46
48
  params[:name]
47
49
  end
@@ -57,7 +59,7 @@ module ActionKitRest
57
59
 
58
60
  def create_event_signup_page(event_campaign, tags)
59
61
  params = event_signup_page_params(event_campaign, tags)
60
- response = client.post_json_request('eventsignuppage/', params)
62
+ _response = client.post_json_request('eventsignuppage/', params)
61
63
 
62
64
  params[:name]
63
65
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Pages
3
5
  class ImportPage < ActionKitRest::Pages::Base
@@ -6,4 +8,4 @@ module ActionKitRest
6
8
  end
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Pages
3
5
  class SignupPage < ActionKitRest::Pages::Base
@@ -6,4 +8,4 @@ module ActionKitRest
6
8
  end
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Pages
3
5
  class UnsubscribePage < ActionKitRest::Pages::Base
@@ -6,4 +8,4 @@ module ActionKitRest
6
8
  end
7
9
  end
8
10
  end
9
- end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class Phone < Base
3
5
  def base_path
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class Railties < ::Rails::Railtie
3
5
  initializer 'Rails logger' do
4
6
  ActionKitRest.logger = Rails.logger
5
7
  end
6
8
  end
7
- end
9
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # A class responsible for proxing to faraday response &
2
4
  # or a pagination collection.
3
5
  module ActionKitRest
@@ -5,9 +7,7 @@ module ActionKitRest
5
7
  class Collection
6
8
  include Enumerable
7
9
 
8
- attr_reader :meta
9
- attr_reader :objects
10
-
10
+ attr_reader :meta, :objects
11
11
 
12
12
  def initialize(meta, objects)
13
13
  @meta = meta
@@ -15,7 +15,7 @@ module ActionKitRest
15
15
  end
16
16
 
17
17
  def each(&block)
18
- # todo handle pagination somehow!
18
+ # TODO: handle pagination somehow!
19
19
  objects.each do |o|
20
20
  block.call(o)
21
21
  end
@@ -1,43 +1,46 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Response
3
5
  class RaiseError < Faraday::Response::Middleware
4
-
5
6
  def on_complete(response)
6
7
  status_code = response[:status].to_i
7
8
  if (400...600).include? status_code
8
9
  if status_code == 400
9
10
  response_body = response[:body]
10
- if JSON.parse(response_body)['errors'] == {'mailing_id' => ['Unable to associate this mailing ID with account.']}
11
+ if JSON.parse(response_body)['errors'] == { 'mailing_id' => ['Unable to associate this mailing ID with account.'] }
11
12
  raise ActionKitRest::Response::InvalidAkidError.new(url: response[:url].to_s, body: response_body)
12
13
  else
13
14
  raise ActionKitRest::Response::ValidationError.new(url: response[:url].to_s, body: response_body)
14
15
  end
15
16
  elsif status_code == 404
16
- raise ActionKitRest::Response::NotFound.new(response[:url].to_s)
17
+ raise ActionKitRest::Response::NotFound, response[:url].to_s
17
18
  elsif status_code == 401
18
- raise ActionKitRest::Response::Unauthorized.new(response[:url].to_s)
19
- elsif status_code == 500 && response[:body] =~ /\"error\"/
19
+ raise ActionKitRest::Response::Unauthorized, response[:url].to_s
20
+ elsif status_code == 500 && response[:body] =~ /"error"/
20
21
  error_hsh = JSON.parse(response[:body])
21
22
  error_message = error_hsh['error']
22
23
 
23
24
  if error_message == 'Sorry, this request could not be processed. Please try again later.'
24
- raise ActionKitRest::Response::TryAgainLater.new(error_message(response))
25
+ raise ActionKitRest::Response::TryAgainLater, error_message(response)
25
26
  else
26
- raise StandardError.new(error_message(response))
27
+ raise StandardError, error_message(response)
27
28
  end
28
29
  else
29
- raise StandardError.new(error_message(response))
30
+ raise StandardError, error_message(response)
30
31
  end
31
32
  end
32
33
  end
33
34
 
34
35
  def error_message(response)
35
- "#{response[:method].to_s.upcase} #{response[:url].to_s}: #{response[:status]} \n\n #{response[:body] if response[:body]}"
36
+ "#{response[:method].to_s.upcase} #{response[:url]}: #{response[:status]} \n\n #{response[:body]}"
36
37
  end
37
38
  end
38
39
 
39
- class TryAgainLater < StandardError ; end
40
- class NotFound < StandardError ; end
41
- class Unauthorized < StandardError ; end
40
+ class TryAgainLater < StandardError; end
41
+
42
+ class NotFound < StandardError; end
43
+
44
+ class Unauthorized < StandardError; end
42
45
  end
43
46
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Response
3
5
  class ValidationError < StandardError
@@ -11,14 +13,12 @@ module ActionKitRest
11
13
  end
12
14
 
13
15
  def to_s
14
- begin
15
- "#{super()} \n url: #{url} \n body: #{body} \n errors: #{errors}"
16
- rescue Encoding::CompatibilityError
17
- # Something went gravely wrong trying to construct the error message, so give up on the extra info
18
- # and just raise the name of the exception.
19
- # This will let us at least raise with a backtrace.
20
- super
21
- end
16
+ "#{super()} \n url: #{url} \n body: #{body} \n errors: #{errors}"
17
+ rescue Encoding::CompatibilityError
18
+ # Something went gravely wrong trying to construct the error message, so give up on the extra info
19
+ # and just raise the name of the exception.
20
+ # This will let us at least raise with a backtrace.
21
+ super
22
22
  end
23
23
  end
24
24
 
@@ -1,17 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module Response
3
5
  class Wrapper
4
6
  include Enumerable
5
7
  extend Forwardable
6
8
 
7
- attr_reader :response
8
- attr_reader :kind
9
- attr_reader :obj
9
+ attr_reader :response, :kind, :obj
10
10
 
11
11
  def_delegators :body, :empty?, :size, :include?, :length, :to_a, :first, :flatten, :include?, :keys, :[]
12
12
 
13
13
  def initialize(response)
14
- @response = response
14
+ @response = response
15
15
 
16
16
  if response.body.respond_to?(:meta) && response.body.meta
17
17
  @kind = :collection
@@ -42,7 +42,7 @@ module ActionKitRest
42
42
 
43
43
  # Response raw body
44
44
  def body
45
- @body ? @body : response.body
45
+ @body || response.body
46
46
  end
47
47
 
48
48
  # Response status
@@ -70,10 +70,10 @@ module ActionKitRest
70
70
  # Convert any key to string before calling.
71
71
  #
72
72
  def [](key)
73
- if self.body.is_a?(Array)
74
- self.body[key]
73
+ if body.is_a?(Array)
74
+ body[key]
75
75
  else
76
- self.body.send(:"#{key}")
76
+ body.send(:"#{key}")
77
77
  end
78
78
  end
79
79
 
@@ -112,9 +112,9 @@ module ActionKitRest
112
112
  block.call(o)
113
113
  end
114
114
  else
115
- raise("can only iterate over collections")
115
+ raise('can only iterate over collections')
116
116
  end
117
117
  end
118
118
  end
119
119
  end
120
- end
120
+ end
@@ -1,20 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class Tag < Base
3
5
  def base_path
4
6
  'tag'
5
7
  end
6
-
8
+
7
9
  def find(name)
8
10
  response = list(name: name)
9
11
  response.obj.first
10
12
  end
11
-
13
+
12
14
  def find_or_create(name)
13
15
  tag = find(name)
14
- if tag.blank?
15
- tag = create(name: name)
16
- end
16
+ tag = create(name: name) if tag.blank?
17
17
  tag
18
18
  end
19
19
  end
20
- end
20
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  class User < Base
3
5
  def base_path
@@ -17,4 +19,4 @@ module ActionKitRest
17
19
  user
18
20
  end
19
21
  end
20
- end
22
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActionKitRest
2
4
  module VERSION
3
5
  MAJOR = 0
4
6
  MINOR = 4
5
- PATCH = 4
7
+ PATCH = 5
6
8
  BUILD = nil
7
9
 
8
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe ActionKitRest::Actions::EventCreateAction do
4
6
  describe '#get' do
5
- let(:actionkit) { ActionKitRest.new(host: 'test.com') }
7
+ let(:actionkit) { ActionKitRest.new(host: 'test.com') }
6
8
 
7
9
  before :each do
8
- stub_request(:get, "https://test.com/rest/v1/eventcreateaction/123/")
9
- .to_return(body: fixture('action/event_create_action.json'), status: '200', headers: {content_type: "application/json; charset=utf-8"})
10
+ stub_request(:get, 'https://test.com/rest/v1/eventcreateaction/123/')
11
+ .to_return(body: fixture('action/event_create_action.json'), status: '200', headers: { content_type: 'application/json; charset=utf-8' })
10
12
  end
11
13
 
12
14
  it 'should retrieve eventcreateaction and aggregate parsed event and user IDs' do
13
15
  ak_event_create_action = actionkit.event_create_action.get('123')
14
16
 
15
- expect(ak_event_create_action.id).to eq(12345)
17
+ expect(ak_event_create_action.id).to eq(12_345)
16
18
  expect(ak_event_create_action.event_id).to eq('999')
17
19
  expect(ak_event_create_action.user_id).to eq('112233')
18
20
  end
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe ActionKitRest::Actions::EventSignupAction do
4
6
  describe '#get' do
5
- let(:actionkit) { ActionKitRest.new(host: 'test.com') }
7
+ let(:actionkit) { ActionKitRest.new(host: 'test.com') }
6
8
 
7
9
  before :each do
8
- stub_request(:get, "https://test.com/rest/v1/eventsignupaction/54321/")
9
- .to_return(body: fixture('action/event_signup_action.json'), status: '200', headers: {content_type: "application/json; charset=utf-8"})
10
+ stub_request(:get, 'https://test.com/rest/v1/eventsignupaction/54321/')
11
+ .to_return(body: fixture('action/event_signup_action.json'), status: '200', headers: { content_type: 'application/json; charset=utf-8' })
10
12
  end
11
13
 
12
14
  it 'should retrieve eventsignupaction and aggregate parsed event sign-up and user IDs' do
13
15
  ak_event_signup_action = actionkit.event_signup_action.get('54321')
14
16
 
15
- expect(ak_event_signup_action.id).to eq(54321)
17
+ expect(ak_event_signup_action.id).to eq(54_321)
16
18
  expect(ak_event_signup_action.event_signup_id).to eq('888')
17
19
  expect(ak_event_signup_action.user_id).to eq('111')
18
20
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe ActionKitRest::AllowedUserField do
4
6
  let(:status) { 200 }
5
- let(:standard_headers) { {content_type: "application/json; charset=utf-8"} }
7
+ let(:standard_headers) { { content_type: 'application/json; charset=utf-8' } }
6
8
 
7
9
  subject { ActionKitRest.new(host: 'test.com', username: 'alice', password: 'somesecret') }
8
10
 
@@ -19,7 +21,7 @@ describe ActionKitRest::AllowedUserField do
19
21
  let(:response_body) { fixture('allowed_user_field/list.json') }
20
22
 
21
23
  before :each do
22
- stub_get(request_path).with(basic_auth: ['alice', 'somesecret'])
24
+ stub_get(request_path).with(basic_auth: %w[alice somesecret])
23
25
  .to_return(body: response_body,
24
26
  status: status,
25
27
  headers: standard_headers)
@@ -38,7 +40,7 @@ describe ActionKitRest::AllowedUserField do
38
40
  let(:response_body) { fixture('allowed_user_field/list_filtered.json') }
39
41
 
40
42
  before :each do
41
- stub_get(request_path).with(basic_auth: ['alice', 'somesecret'])
43
+ stub_get(request_path).with(basic_auth: %w[alice somesecret])
42
44
  .to_return(body: response_body,
43
45
  status: status,
44
46
  headers: standard_headers)
@@ -52,26 +54,26 @@ describe ActionKitRest::AllowedUserField do
52
54
 
53
55
  describe '#create' do
54
56
  let(:create_request_path) { 'alloweduserfield/' }
55
- let(:create_request_body) { {name: 'foo'}.to_json }
57
+ let(:create_request_body) { { name: 'foo' }.to_json }
56
58
  let(:create_status) { 201 }
57
59
  let(:created_url) { 'https://test.com/rest/v1/alloweduserfield/foo/' }
58
60
  let(:get_request_path) { 'alloweduserfield/foo/' }
59
61
  let(:get_response_body) { fixture('allowed_user_field/get.json') }
60
62
 
61
63
  before :each do
62
- stub_post(create_request_path).with(basic_auth: ['alice', 'somesecret'],
64
+ stub_post(create_request_path).with(basic_auth: %w[alice somesecret],
63
65
  body: create_request_body)
64
66
  .to_return(status: create_status,
65
67
  headers: standard_headers.merge(Location: created_url))
66
68
 
67
- stub_get(get_request_path).with(basic_auth: ['alice', 'somesecret'])
69
+ stub_get(get_request_path).with(basic_auth: %w[alice somesecret])
68
70
  .to_return(body: get_response_body,
69
71
  status: status,
70
72
  headers: standard_headers)
71
73
  end
72
74
 
73
75
  it 'should POST to the endpoint, then do a GET on the created object' do
74
- field = subject.allowed_user_field.create({name: 'foo'})
76
+ field = subject.allowed_user_field.create({ name: 'foo' })
75
77
  expect(field.display_name).to eq 'Foo'
76
78
  end
77
79
  end