active_campaign 0.1.14 → 0.1.15

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.
@@ -1,20 +1,68 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveCampaign
2
4
  class Client
3
5
  module Messages
4
- GET_METHODS ||= %w(
5
- delete_list delete list template_add template_delete_list
6
- template_delete template_edit template_export template_import
7
- template_list template_view view
8
- ).freeze
9
-
10
- POST_METHODS ||= %w(add edit).freeze
11
-
12
- # TODO: Create proper methods with parameter validation and possible
13
- # naming fixes since this is one the worst APIs I have ever worked with.
14
- def self.included(base)
15
- base.class_exec do
16
- define_api_calls(:message, GET_METHODS, POST_METHODS)
17
- end
6
+ #
7
+ # POST methods
8
+ #
9
+ def message_add(options = {})
10
+ post __method__, options
11
+ end
12
+
13
+ def message_edit(options = {})
14
+ post __method__, options
15
+ end
16
+
17
+ def message_template_edit(options = {})
18
+ post __method__, options
19
+ end
20
+
21
+ #
22
+ # GET methods
23
+ #
24
+ def message_delete_list(options = {})
25
+ get(__method__, options)
26
+ end
27
+
28
+ def message_delete(options = {})
29
+ get(__method__, options)
30
+ end
31
+
32
+ def message_list(options = {})
33
+ get(__method__, options)
34
+ end
35
+
36
+ def message_template_add(options = {})
37
+ get(__method__, options)
38
+ end
39
+
40
+ def message_template_delete_list(options = {})
41
+ get(__method__, options)
42
+ end
43
+
44
+ def message_template_delete(options = {})
45
+ get(__method__, options)
46
+ end
47
+
48
+ def message_template_export(options = {})
49
+ get(__method__, options)
50
+ end
51
+
52
+ def message_template_import(options = {})
53
+ get(__method__, options)
54
+ end
55
+
56
+ def message_template_list(options = {})
57
+ get(__method__, options)
58
+ end
59
+
60
+ def message_template_view(options = {})
61
+ get(__method__, options)
62
+ end
63
+
64
+ def message_view(options = {})
65
+ get(__method__, options)
18
66
  end
19
67
  end
20
68
  end
@@ -1,17 +1,54 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveCampaign
2
4
  class Client
3
5
  module Tracks
4
- GET_METHODS ||= %w(event_list site_list).freeze
5
- PUT_METHODS ||= %w(site_whitelist_add).freeze
6
- POST_METHODS ||= %w(event_status_edit site_status_edit event_add).freeze
7
- DELETE_METHODS ||= %w(event_delete site_whitelist_delete).freeze
8
-
9
- # TODO: Create proper methods with parameter validation and possible
10
- # naming fixes since this is one the worst APIs I have ever worked with.
11
- def self.included(base)
12
- base.class_exec do
13
- define_api_calls(:track, GET_METHODS, POST_METHODS, DELETE_METHODS, PUT_METHODS)
14
- end
6
+ #
7
+ # POST methods
8
+ #
9
+
10
+ def track_event_status_edit(options = {})
11
+ post __method__, options
12
+ end
13
+
14
+ def track_site_status_edit(options = {})
15
+ post __method__, options
16
+ end
17
+
18
+ def track_event_add(options = {})
19
+ post __method__, options
20
+ end
21
+
22
+ #
23
+ # PUT methods
24
+ #
25
+
26
+ def track_site_whitelist_add(options = {})
27
+ put __method__, options
28
+ end
29
+
30
+ #
31
+ # GET methods
32
+ #
33
+
34
+ def track_event_list(options = {})
35
+ get __method__, options
36
+ end
37
+
38
+ def track_site_list(options = {})
39
+ get __method__, options
40
+ end
41
+
42
+ #
43
+ # DELETE methods
44
+ #
45
+
46
+ def track_event_delete(options = {})
47
+ delete __method__, options
48
+ end
49
+
50
+ def track_site_whitelist_delete(options = {})
51
+ delete __method__, options
15
52
  end
16
53
  end
17
54
  end
@@ -1,15 +1,50 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveCampaign
2
4
  class Client
3
5
  module Users
4
- GET_METHODS ||= %w(delete delete_list list me view view_email view_username).freeze
5
- POST_METHODS ||= %w(add edit).freeze
6
-
7
- # TODO: Create proper methods with parameter validation and possible naming
8
- # fixes since this is one the worst APIs I have ever worked with.
9
- def self.included(base)
10
- base.class_exec do
11
- define_api_calls(:user, GET_METHODS, POST_METHODS)
12
- end
6
+ #
7
+ # POST methods
8
+ #
9
+
10
+ def user_add(options = {})
11
+ post __method__, options
12
+ end
13
+
14
+ def user_edit(options = {})
15
+ post __method__, options
16
+ end
17
+
18
+ #
19
+ # GET methods
20
+ #
21
+
22
+ def user_delete(options = {})
23
+ get __method__, options
24
+ end
25
+
26
+ def user_delete_list(options = {})
27
+ get __method__, options
28
+ end
29
+
30
+ def user_list(options = {})
31
+ get __method__, options
32
+ end
33
+
34
+ def user_me(options = {})
35
+ get __method__, options
36
+ end
37
+
38
+ def user_view(options = {})
39
+ get __method__, options
40
+ end
41
+
42
+ def user_view_email(options = {})
43
+ get __method__, options
44
+ end
45
+
46
+ def user_view_username(options = {})
47
+ get __method__, options
13
48
  end
14
49
  end
15
50
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveCampaign
2
4
  class Configuration
3
- API_ENDPOINT ||= 'https://subdomain.activehosted.com/admin/api.php'.freeze
4
- USER_AGENT ||= "ActiveCampaign Ruby Gem #{ActiveCampaign::VERSION}".freeze
5
- API_OUTPUT ||= 'json'.freeze
5
+ API_ENDPOINT ||= 'https://subdomain.activehosted.com/admin/api.php'
6
+ USER_AGENT ||= "ActiveCampaign Ruby Gem #{ActiveCampaign::VERSION}"
7
+ API_OUTPUT ||= 'json'
6
8
 
7
9
  attr_accessor :api_key, :api_endpoint, :api_output, :user_agent,
8
10
  :log, :logger, :log_level, :mash, :debug
@@ -15,11 +17,10 @@ module ActiveCampaign
15
17
  @log = false
16
18
  @logger = nil
17
19
  @log_level = :info
18
- @mash = false
19
20
  @debug = false
20
21
  end
21
22
 
22
- def to_h # rubocop:disable MethodLength
23
+ def to_h
23
24
  {
24
25
  api_key: api_key,
25
26
  api_endpoint: api_endpoint,
@@ -28,7 +29,6 @@ module ActiveCampaign
28
29
  log: log,
29
30
  logger: logger,
30
31
  log_level: log_level,
31
- mash: mash,
32
32
  debug: debug
33
33
  }
34
34
  end
@@ -40,16 +40,41 @@ module ActiveCampaign
40
40
  self
41
41
  end
42
42
 
43
- def <=>(other) # rubocop:disable AbcSize, CyclomaticComplexity, PerceivedComplexity
43
+ def ==(other)
44
+ other.is_a?(ActiveCampaign::Configuration) &&
45
+ all_api_info_equal &&
46
+ user_agent == other.user_agent &&
47
+ all_log_info_equal &&
48
+ debug == other.debug
49
+ end
50
+ alias eql? ==
51
+
52
+ def hash
53
+ [
54
+ api_key,
55
+ api_endpoint,
56
+ api_output,
57
+ user_agent,
58
+ log,
59
+ logger,
60
+ log_level,
61
+ debug,
62
+ ActiveCampaign::Configuration
63
+ ].hash
64
+ end
65
+
66
+ private
67
+
68
+ def all_api_info_equal
44
69
  api_key == other.api_key &&
45
70
  api_endpoint == other.api_endpoint &&
46
- api_output == other.api_output &&
47
- user_agent == other.user_agent &&
48
- log == other.log &&
71
+ api_output == other.api_output
72
+ end
73
+
74
+ def all_log_info_equal
75
+ log == other.log &&
49
76
  logger == other.logger &&
50
- log_level == other.log_level &&
51
- mash == other.mash &&
52
- debug == other.debug
77
+ log_level == other.log_level
53
78
  end
54
79
  end
55
80
  end
@@ -1,11 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class Hash
4
+ # unless respo?(:to_query)
2
5
  def to_query(namespace = nil)
3
6
  collect do |key, value|
4
7
  unless (value.is_a?(Hash) || value.is_a?(Array)) && value.empty?
5
8
  value.to_query(namespace ? "#{namespace}[#{key}]" : key)
6
9
  end
7
10
  end.compact.sort! * '&'
8
- end # unless respo?(:to_query)
11
+ end
9
12
  end
10
13
 
11
14
  class Array
@@ -13,6 +16,7 @@ class Array
13
16
  collect(&:to_param).join '/'
14
17
  end
15
18
 
19
+ # unless respo?(:to_query)
16
20
  def to_query(key)
17
21
  prefix = "#{key}[]"
18
22
 
@@ -21,13 +25,14 @@ class Array
21
25
  else
22
26
  collect { |value| value.to_query(prefix) }.join '&'
23
27
  end
24
- end # unless defined?(:to_query)
28
+ end
25
29
  end
26
30
 
27
31
  class Object
32
+ # unless respo?(:to_query)
28
33
  def to_query(key)
29
34
  "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
30
- end # unless defined?(:to_query)
35
+ end
31
36
 
32
37
  def to_param
33
38
  to_s
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ActiveCampaign
2
- VERSION = '0.1.14'.freeze
4
+ VERSION = '0.1.15'
3
5
  end
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  require 'spec_helper'
3
4
 
4
5
  describe ActiveCampaign::Client::Contacts, :vcr do
@@ -1,4 +1,5 @@
1
- # -*- encoding: utf-8 -*-
1
+ # frozen_string_literal: true
2
+
2
3
  require 'spec_helper'
3
4
 
4
5
  describe ActiveCampaign::Client::Lists, :vcr do
@@ -1,6 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  module ActiveCampaign
4
6
  describe Client do
7
+ describe '.new' do
8
+ subject(:client) { described_class.new(api_key: 'testing') }
9
+ let(:client_two) { described_class.new(api_key: 'somekey') }
10
+
11
+ it { is_expected.not_to eq(client_two) }
12
+ end
5
13
  end
6
14
  end
@@ -1,18 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe ActiveCampaign do
4
6
  # rubocop:disable LineLength
5
- API_CALLS = %w(
6
- campaign_create campaign_delete campaign_delete_list campaign_list campaign_paginator campaign_report_bounce_list campaign_report_bounce_totals campaign_report_forward_list campaign_report_forward_totals campaign_report_link_list campaign_report_link_totals campaign_report_open_list campaign_report_open_totals campaign_report_totals campaign_report_unopen_list campaign_report_unsubscription_list campaign_report_unsubscription_totals campaign_send campaign_status
7
- contact_add contact_automation_list contact_delete contact_delete_list contact_edit contact_list contact_note_add contact_note_delete contact_note_edit contact_paginator contact_sync contact_tag_add contact_tag_remove contact_view contact_view_email contact_view_hash
8
- deal_add deal_delete deal_edit deal_get deal_list deal_note_add deal_note_edit deal_pipeline_add deal_pipeline_delete deal_pipeline_edit deal_pipeline_list deal_stage_add deal_stage_delete deal_stage_edit deal_stage_list deal_task_add deal_task_edit deal_tasktype_add deal_tasktype_delete deal_tasktype_edit
9
- form_getforms form_html
10
- group_add group_delete group_delete_list group_edit group_list group_view
11
- list_add list_delete list_delete_list list_edit list_field_add list_field_delete list_field_edit list_field_view list_list list_paginator list_view
12
- message_add message_delete message_delete_list message_edit message_list message_template_add message_template_delete message_template_delete_list message_template_edit message_template_export message_template_import message_template_list message_template_view message_view
13
- user_add user_delete user_delete_list user_edit user_list user_me user_view user_view_email user_view_username
14
- track_event_delete track_event_list track_event_status_edit track_site_list track_site_status_edit track_site_whitelist_add track_site_whitelist_delete track_event_add
15
- ).freeze unless defined?(API_CALLS)
7
+ unless defined?(API_CALLS)
8
+ API_CALLS = %w[
9
+ campaign_create campaign_delete campaign_delete_list campaign_list campaign_paginator campaign_report_bounce_list campaign_report_bounce_totals campaign_report_forward_list campaign_report_forward_totals campaign_report_link_list campaign_report_link_totals campaign_report_open_list campaign_report_open_totals campaign_report_totals campaign_report_unopen_list campaign_report_unsubscription_list campaign_report_unsubscription_totals campaign_send campaign_status
10
+ contact_add contact_automation_list contact_delete contact_delete_list contact_edit contact_list contact_note_add contact_note_delete contact_note_edit contact_paginator contact_sync contact_tag_add contact_tag_remove contact_view contact_view_email contact_view_hash
11
+ deal_add deal_delete deal_edit deal_get deal_list deal_note_add deal_note_edit deal_pipeline_add deal_pipeline_delete deal_pipeline_edit deal_pipeline_list deal_stage_add deal_stage_delete deal_stage_edit deal_stage_list deal_task_add deal_task_edit deal_tasktype_add deal_tasktype_delete deal_tasktype_edit
12
+ form_getforms form_html
13
+ group_add group_delete group_delete_list group_edit group_list group_view
14
+ list_add list_delete list_delete_list list_edit list_field_add list_field_delete list_field_edit list_field_view list_list list_paginator list_view
15
+ message_add message_delete message_delete_list message_edit message_list message_template_add message_template_delete message_template_delete_list message_template_edit message_template_export message_template_import message_template_list message_template_view message_view
16
+ user_add user_delete user_delete_list user_edit user_list user_me user_view user_view_email user_view_username
17
+ track_event_delete track_event_list track_event_status_edit track_site_list track_site_status_edit track_site_whitelist_add track_site_whitelist_delete track_event_add
18
+ ].freeze
19
+ end
16
20
  # rubocop:enable LineLength
17
21
 
18
22
  before do
@@ -37,15 +41,6 @@ describe ActiveCampaign do
37
41
  it 'caches the client when the same options are passed' do
38
42
  expect(ActiveCampaign.client).to eq ActiveCampaign.client
39
43
  end
40
-
41
- it 'returns a fresh client when options are not the same' do
42
- client = ActiveCampaign.client
43
- ActiveCampaign.config.api_key = 'somekey'
44
- client_two = ActiveCampaign.client
45
- client_three = ActiveCampaign.client
46
- expect(client_three).to eql client_two
47
- expect(client).to_not eql client_two
48
- end
49
44
  end
50
45
 
51
46
  describe '.configure' do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'simplecov'
2
4
 
3
5
  require 'pry'
@@ -6,8 +8,8 @@ require 'active_campaign'
6
8
  require_relative 'support/webmock'
7
9
  require_relative 'support/vcr'
8
10
 
9
- TEST_API_ENDPOINT ||= 'https://zoolutions.api-us1.com/admin/api.php'.freeze
10
- TEST_API_KEY ||= '1b85f597c38b74fc842a04efe00f10d547a839487dcb05e2c639e92c450d53a366d96f84'.freeze
11
+ TEST_API_ENDPOINT ||= 'https://zoolutions.api-us1.com/admin/api.php'
12
+ TEST_API_KEY ||= '1b85f597c38b74fc842a04efe00f10d547a839487dcb05e2c639e92c450d53a366d96f84'
11
13
 
12
14
  RSpec.configure do |config|
13
15
  config.filter_run focus: true
@@ -24,7 +26,7 @@ RSpec.configure do |config|
24
26
  end
25
27
  end
26
28
 
27
- def initialize_new_client # rubocop:disable MethodLength
29
+ def initialize_new_client
28
30
  before do
29
31
  @client = ActiveCampaign::Client.new(
30
32
  api_endpoint: TEST_API_ENDPOINT,
@@ -32,8 +34,7 @@ def initialize_new_client # rubocop:disable MethodLength
32
34
  api_output: 'json',
33
35
  debug: false,
34
36
  log_level: :fatal,
35
- log: false,
36
- mash: false
37
+ log: false
37
38
  )
38
39
  end
39
40
  end