active_campaign 0.1.13 → 0.1.14
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.
- checksums.yaml +4 -4
 - data/.rubocop.yml +9 -3
 - data/.travis.yml +15 -7
 - data/Gemfile +3 -2
 - data/README.md +1 -1
 - data/active_campaign.gemspec +0 -2
 - data/lib/active_campaign.rb +16 -8
 - data/lib/active_campaign/client.rb +11 -15
 - data/lib/active_campaign/client/campaigns.rb +7 -7
 - data/lib/active_campaign/client/contacts.rb +9 -11
 - data/lib/active_campaign/client/deals.rb +7 -7
 - data/lib/active_campaign/client/forms.rb +5 -5
 - data/lib/active_campaign/client/groups.rb +7 -7
 - data/lib/active_campaign/client/lists.rb +12 -10
 - data/lib/active_campaign/client/messages.rb +7 -7
 - data/lib/active_campaign/client/tracks.rb +8 -12
 - data/lib/active_campaign/client/users.rb +6 -11
 - data/lib/active_campaign/configuration.rb +44 -24
 - data/lib/active_campaign/core_ext.rb +53 -0
 - data/lib/active_campaign/version.rb +1 -1
 - data/spec/cassettes/ActiveCampaign_Client_Contacts/_contact_add/when_successful/returns_1_for_result_code.yml +96 -0
 - data/spec/cassettes/ActiveCampaign_Client_Contacts/_contact_sync/when_successful/returns_1_for_result_code.yml +96 -0
 - data/spec/cassettes/ActiveCampaign_Client_Contacts/_contact_view/can_find_contact_by_id.yml +150 -0
 - data/spec/cassettes/ActiveCampaign_Client_Lists/_list_add/add_a_list.yml +48 -0
 - data/spec/cassettes/ActiveCampaign_Client_Lists/_list_list/can_find_a_list_of_lists.yml +106 -0
 - data/spec/cassettes/ActiveCampaign_Client_Lists/_list_view/can_find_lists_by_id.yml +102 -0
 - data/spec/lib/active_campaign/client/contacts_spec.rb +15 -5
 - data/spec/lib/active_campaign/client/lists_spec.rb +26 -18
 - data/spec/lib/active_campaign/client_spec.rb +0 -1
 - data/spec/lib/active_campaign_spec.rb +2 -2
 - data/spec/spec_helper.rb +12 -14
 - data/spec/support/coverage.rb +6 -2
 - data/spec/support/vcr.rb +7 -5
 - metadata +15 -40
 - data/circle.yml +0 -15
 - data/spec/cassettes/ActiveCampaign_Client_Contacts/_contact_sync/when_successful/returns_1_for_result_code.json +0 -1
 - data/spec/cassettes/ActiveCampaign_Client_Contacts/_contact_view/can_find_contact_by_id.json +0 -1
 - data/spec/cassettes/ActiveCampaign_Client_Lists/_list_list/can_find_a_list_of_lists.json +0 -1
 - data/spec/cassettes/ActiveCampaign_Client_Lists/_list_view/can_find_lists_by_id.json +0 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: f959a6cbb68c5711716a5039eaacce4d89e8858d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5661a144faa672e737d400d37c8b46dccebf9249
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 492bfc8ce519fa91f47a2a86776a0d5611cba71405fa0a6d8a381b9cbbf63ae20be3b750f95a54b7409d0ebd1cf752e1b64a75ca789fa04539009b1a48a9dc17
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 77e704860971e8ee2fc591fc3288a8144ce03dfbb501657eaa0e90c03d663fd9daba04afd313576f7b65516a5d7c217274119d67cf29d3d951ec091631f2fafc
         
     | 
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,12 +1,20 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            sudo: false
         
     | 
| 
      
 2 
     | 
    
         
            +
            language: ruby
         
     | 
| 
      
 3 
     | 
    
         
            +
            cache: bundler
         
     | 
| 
      
 4 
     | 
    
         
            +
            before_install:
         
     | 
| 
      
 5 
     | 
    
         
            +
              - rvm get head
         
     | 
| 
      
 6 
     | 
    
         
            +
              - gem update --system
         
     | 
| 
      
 7 
     | 
    
         
            +
              - gem install bundler
         
     | 
| 
       2 
8 
     | 
    
         | 
| 
       3 
9 
     | 
    
         
             
            language: ruby
         
     | 
| 
       4 
10 
     | 
    
         | 
| 
       5 
11 
     | 
    
         
             
            rvm:
         
     | 
| 
       6 
12 
     | 
    
         
             
              - jruby-19mode
         
     | 
| 
       7 
     | 
    
         
            -
              - rbx- 
     | 
| 
       8 
     | 
    
         
            -
              - 1. 
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              - 2. 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
              - rbx-3
         
     | 
| 
      
 14 
     | 
    
         
            +
              - 2.1.8
         
     | 
| 
      
 15 
     | 
    
         
            +
              - 2.2.4
         
     | 
| 
      
 16 
     | 
    
         
            +
              - 2.3.1
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            addons:
         
     | 
| 
      
 19 
     | 
    
         
            +
              code_climate:
         
     | 
| 
      
 20 
     | 
    
         
            +
                repo_token: e199bdc9d2cf5ceaa7e46425f118470e43880940098f815a4c972a923102b12b
         
     | 
    
        data/Gemfile
    CHANGED
    
    | 
         @@ -5,12 +5,13 @@ gem 'rubysl', '~> 2', platform: :rbx 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            group :test do
         
     | 
| 
       7 
7 
     | 
    
         
             
              gem 'pry'
         
     | 
| 
       8 
     | 
    
         
            -
              gem 'simplecov' 
     | 
| 
      
 8 
     | 
    
         
            +
              gem 'simplecov'
         
     | 
| 
      
 9 
     | 
    
         
            +
              gem 'simplecov-json'
         
     | 
| 
       9 
10 
     | 
    
         
             
              gem 'rubinius-coverage', platform: :rbx
         
     | 
| 
       10 
11 
     | 
    
         
             
              gem 'codeclimate-test-reporter', require: false
         
     | 
| 
       11 
12 
     | 
    
         
             
              gem 'coveralls', require: false
         
     | 
| 
       12 
13 
     | 
    
         
             
              gem 'rb-fsevent'
         
     | 
| 
       13 
     | 
    
         
            -
              gem 'rspec', ' 
     | 
| 
      
 14 
     | 
    
         
            +
              gem 'rspec', '>= 3.2'
         
     | 
| 
       14 
15 
     | 
    
         
             
              gem 'vcr'
         
     | 
| 
       15 
16 
     | 
    
         
             
              gem 'webmock'
         
     | 
| 
       16 
17 
     | 
    
         
             
              gem 'rubocop'
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -33,7 +33,7 @@ client = ::ActiveCampaign::Client.new( 
     | 
|
| 
       33 
33 
     | 
    
         
             
            # or configure globally for all clients
         
     | 
| 
       34 
34 
     | 
    
         
             
            ::ActiveCampaign.configure do |config|
         
     | 
| 
       35 
35 
     | 
    
         
             
              config.api_endpoint = 'YOUR-ENDPOINT', # e.g. 'https://yourendpoint.api-us1.com'
         
     | 
| 
       36 
     | 
    
         
            -
              config.api_key = 'YOUR-API-KEY' 
     | 
| 
      
 36 
     | 
    
         
            +
              config.api_key = 'YOUR-API-KEY' # e.g. 'a4e60a1ba200595d5cc37ede5732545184165e'
         
     | 
| 
       37 
37 
     | 
    
         
             
            end
         
     | 
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
            ```
         
     | 
    
        data/active_campaign.gemspec
    CHANGED
    
    
    
        data/lib/active_campaign.rb
    CHANGED
    
    | 
         @@ -1,21 +1,17 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'active_support'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'active_support/core_ext'
         
     | 
| 
       3 
     | 
    
         
            -
            require 'active_support/core_ext/module/delegation'
         
     | 
| 
       4 
1 
     | 
    
         
             
            require 'active_campaign/version'
         
     | 
| 
       5 
2 
     | 
    
         
             
            require 'active_campaign/client'
         
     | 
| 
       6 
3 
     | 
    
         
             
            require 'active_campaign/configuration'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'active_campaign/core_ext'
         
     | 
| 
       7 
5 
     | 
    
         | 
| 
       8 
6 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       9 
     | 
    
         
            -
              extend Configuration
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
7 
     | 
    
         
             
              module_function
         
     | 
| 
       12 
8 
     | 
    
         | 
| 
       13 
9 
     | 
    
         
             
              # API client based on configured options {Configurable}
         
     | 
| 
       14 
10 
     | 
    
         
             
              #
         
     | 
| 
       15 
11 
     | 
    
         
             
              # @return [ActiveCampaign::Client] API wrapper
         
     | 
| 
       16 
12 
     | 
    
         
             
              def client
         
     | 
| 
       17 
     | 
    
         
            -
                unless defined?(@client) && @client.same_options?( 
     | 
| 
       18 
     | 
    
         
            -
                  @client = ActiveCampaign::Client.new( 
     | 
| 
      
 13 
     | 
    
         
            +
                unless defined?(@client) && @client.same_options?(config)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @client = ActiveCampaign::Client.new(config)
         
     | 
| 
       19 
15 
     | 
    
         
             
                end
         
     | 
| 
       20 
16 
     | 
    
         | 
| 
       21 
17 
     | 
    
         
             
                @client
         
     | 
| 
         @@ -24,13 +20,25 @@ module ActiveCampaign 
     | 
|
| 
       24 
20 
     | 
    
         
             
              # @private
         
     | 
| 
       25 
21 
     | 
    
         
             
              def respond_to_missing?(method_name, include_private = false)
         
     | 
| 
       26 
22 
     | 
    
         
             
                client.respond_to?(method_name, include_private)
         
     | 
| 
       27 
     | 
    
         
            -
              end 
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
       28 
24 
     | 
    
         | 
| 
       29 
25 
     | 
    
         
             
              # @private
         
     | 
| 
       30 
26 
     | 
    
         
             
              def respond_to?(method_name, include_private = false)
         
     | 
| 
       31 
27 
     | 
    
         
             
                client.respond_to?(method_name, include_private) || super
         
     | 
| 
       32 
28 
     | 
    
         
             
              end if RUBY_VERSION < '1.9'
         
     | 
| 
       33 
29 
     | 
    
         | 
| 
      
 30 
     | 
    
         
            +
              def config
         
     | 
| 
      
 31 
     | 
    
         
            +
                @config ||= Configuration.new
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def configure
         
     | 
| 
      
 35 
     | 
    
         
            +
                yield config if block_given?
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              def reset!
         
     | 
| 
      
 39 
     | 
    
         
            +
                @config = Configuration.new
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       34 
42 
     | 
    
         
             
              private
         
     | 
| 
       35 
43 
     | 
    
         | 
| 
       36 
44 
     | 
    
         
             
              def method_missing(method_name, *args, &block)
         
     | 
| 
         @@ -1,6 +1,4 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'httpi'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'hashie'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
2 
     | 
    
         
             
            require 'active_campaign/method_creator'
         
     | 
| 
       5 
3 
     | 
    
         | 
| 
       6 
4 
     | 
    
         
             
            require 'active_campaign/client/campaigns'
         
     | 
| 
         @@ -17,6 +15,7 @@ module ActiveCampaign 
     | 
|
| 
       17 
15 
     | 
    
         
             
              class Client
         
     | 
| 
       18 
16 
     | 
    
         
             
                include Comparable
         
     | 
| 
       19 
17 
     | 
    
         
             
                extend ActiveCampaign::MethodCreator
         
     | 
| 
      
 18 
     | 
    
         
            +
                extend Forwardable
         
     | 
| 
       20 
19 
     | 
    
         | 
| 
       21 
20 
     | 
    
         
             
                include ActiveCampaign::Client::Campaigns
         
     | 
| 
       22 
21 
     | 
    
         
             
                include ActiveCampaign::Client::Contacts
         
     | 
| 
         @@ -28,14 +27,11 @@ module ActiveCampaign 
     | 
|
| 
       28 
27 
     | 
    
         
             
                include ActiveCampaign::Client::Tracks
         
     | 
| 
       29 
28 
     | 
    
         
             
                include ActiveCampaign::Client::Users
         
     | 
| 
       30 
29 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                 
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                attr_accessor :config
         
     | 
| 
      
 30 
     | 
    
         
            +
                def_delegators :@config, :api_key, :api_output, :api_endpoint,
         
     | 
| 
      
 31 
     | 
    
         
            +
                               :user_agent, :log, :log_level, :logger, :mash, :debug
         
     | 
| 
       35 
32 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                def initialize( 
     | 
| 
       37 
     | 
    
         
            -
                   
     | 
| 
       38 
     | 
    
         
            -
                  self.config ||= ActiveCampaign.configuration
         
     | 
| 
      
 33 
     | 
    
         
            +
                def initialize(options = {})
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @config ||= ActiveCampaign.config.merge(options)
         
     | 
| 
       39 
35 
     | 
    
         
             
                end
         
     | 
| 
       40 
36 
     | 
    
         | 
| 
       41 
37 
     | 
    
         
             
                # Compares client options to a Hash of requested options
         
     | 
| 
         @@ -43,7 +39,7 @@ module ActiveCampaign 
     | 
|
| 
       43 
39 
     | 
    
         
             
                # @param opts [Hash] Options to compare with current client options
         
     | 
| 
       44 
40 
     | 
    
         
             
                # @return [Boolean]
         
     | 
| 
       45 
41 
     | 
    
         
             
                def same_options?(other_config)
         
     | 
| 
       46 
     | 
    
         
            -
                  config.to_h.sort == other_config.to_h.sort
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @config.to_h.sort == other_config.to_h.sort
         
     | 
| 
       47 
43 
     | 
    
         
             
                end
         
     | 
| 
       48 
44 
     | 
    
         | 
| 
       49 
45 
     | 
    
         
             
                # Make a HTTP GET request
         
     | 
| 
         @@ -56,12 +52,12 @@ module ActiveCampaign 
     | 
|
| 
       56 
52 
     | 
    
         
             
                end
         
     | 
| 
       57 
53 
     | 
    
         | 
| 
       58 
54 
     | 
    
         
             
                def hash
         
     | 
| 
       59 
     | 
    
         
            -
                  [config, Client].hash
         
     | 
| 
      
 55 
     | 
    
         
            +
                  [@config, Client].hash
         
     | 
| 
       60 
56 
     | 
    
         
             
                end
         
     | 
| 
       61 
57 
     | 
    
         | 
| 
       62 
58 
     | 
    
         
             
                def <=>(other)
         
     | 
| 
       63 
59 
     | 
    
         
             
                  other.is_a?(ActiveCampaign::Client) &&
         
     | 
| 
       64 
     | 
    
         
            -
                    config.to_h.sort <=> other.config.to_h.sort
         
     | 
| 
      
 60 
     | 
    
         
            +
                    @config.to_h.sort <=> other.config.to_h.sort
         
     | 
| 
       65 
61 
     | 
    
         
             
                end
         
     | 
| 
       66 
62 
     | 
    
         | 
| 
       67 
63 
     | 
    
         
             
                # Make a HTTP POST request
         
     | 
| 
         @@ -79,6 +75,7 @@ module ActiveCampaign 
     | 
|
| 
       79 
75 
     | 
    
         
             
                  req = create_request method, api_method, data
         
     | 
| 
       80 
76 
     | 
    
         
             
                  response = HTTPI.send(method, req)
         
     | 
| 
       81 
77 
     | 
    
         
             
                  response = JSON.parse(response.body)
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
       82 
79 
     | 
    
         
             
                  normalize(response)
         
     | 
| 
       83 
80 
     | 
    
         
             
                end
         
     | 
| 
       84 
81 
     | 
    
         | 
| 
         @@ -119,12 +116,11 @@ module ActiveCampaign 
     | 
|
| 
       119 
116 
     | 
    
         
             
                def normalize(response)
         
     | 
| 
       120 
117 
     | 
    
         
             
                  keys, values = keys_values(response)
         
     | 
| 
       121 
118 
     | 
    
         
             
                  if keys.all? { |key| numeric?(key) }
         
     | 
| 
       122 
     | 
    
         
            -
                    response[ 
     | 
| 
      
 119 
     | 
    
         
            +
                    response['results'] = values
         
     | 
| 
       123 
120 
     | 
    
         
             
                    keys.each { |key| response.delete(key) }
         
     | 
| 
       124 
121 
     | 
    
         
             
                  end
         
     | 
| 
       125 
122 
     | 
    
         | 
| 
       126 
     | 
    
         
            -
                   
     | 
| 
       127 
     | 
    
         
            -
                  ActiveSupport::HashWithIndifferentAccess.new(response)
         
     | 
| 
      
 123 
     | 
    
         
            +
                  response
         
     | 
| 
       128 
124 
     | 
    
         
             
                end
         
     | 
| 
       129 
125 
     | 
    
         | 
| 
       130 
126 
     | 
    
         
             
                def numeric?(string)
         
     | 
| 
         @@ -1,21 +1,21 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Campaigns
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(
         
     | 
| 
       5 
5 
     | 
    
         
             
                    create delete_list delete list paginator report_bounce_list
         
     | 
| 
       6 
6 
     | 
    
         
             
                    report_bounce_totals report_forward_list report_forward_totals
         
     | 
| 
       7 
7 
     | 
    
         
             
                    report_link_list report_link_totals report_open_list report_open_totals
         
     | 
| 
       8 
8 
     | 
    
         
             
                    report_totals report_unopen_list report_unsubscription_list
         
     | 
| 
       9 
9 
     | 
    
         
             
                    report_unsubscription_totals send status
         
     | 
| 
       10 
     | 
    
         
            -
                  ).freeze 
     | 
| 
       11 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 10 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
      
 11 
     | 
    
         
            +
                  POST_METHODS ||= %w(create).freeze
         
     | 
| 
       14 
12 
     | 
    
         | 
| 
       15 
13 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible
         
     | 
| 
       16 
14 
     | 
    
         
             
                  #       naming fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       17 
     | 
    
         
            -
                  included 
     | 
| 
       18 
     | 
    
         
            -
                     
     | 
| 
      
 15 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 17 
     | 
    
         
            +
                      define_api_calls(:campaign, GET_METHODS, POST_METHODS)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
       19 
19 
     | 
    
         
             
                  end
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
       21 
21 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,25 +1,23 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'active_support'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       4 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       5 
3 
     | 
    
         
             
                module Contacts
         
     | 
| 
       6 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(
         
     | 
| 
       7 
5 
     | 
    
         
             
                    automation_list delete_list delete list paginator view view_email
         
     | 
| 
       8 
6 
     | 
    
         
             
                    view_hash note_delete
         
     | 
| 
       9 
     | 
    
         
            -
                  ).freeze 
     | 
| 
      
 7 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
       10 
8 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
      
 9 
     | 
    
         
            +
                  POST_METHODS ||= %w(
         
     | 
| 
       12 
10 
     | 
    
         
             
                    add edit sync tag_add tag_remove
         
     | 
| 
       13 
11 
     | 
    
         
             
                    note_edit note_add
         
     | 
| 
       14 
     | 
    
         
            -
                  ).freeze 
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 12 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
       17 
13 
     | 
    
         | 
| 
       18 
14 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible naming
         
     | 
| 
       19 
15 
     | 
    
         
             
                  #       fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       20 
     | 
    
         
            -
                  included 
     | 
| 
       21 
     | 
    
         
            -
                     
     | 
| 
       22 
     | 
    
         
            -
                       
     | 
| 
      
 16 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 18 
     | 
    
         
            +
                      %w(contact subscriber).each do |name|
         
     | 
| 
      
 19 
     | 
    
         
            +
                        define_api_calls(name, GET_METHODS, POST_METHODS)
         
     | 
| 
      
 20 
     | 
    
         
            +
                      end
         
     | 
| 
       23 
21 
     | 
    
         
             
                    end
         
     | 
| 
       24 
22 
     | 
    
         
             
                  end
         
     | 
| 
       25 
23 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1,20 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Deals
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(get list pipeline_list stage_list).freeze
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
      
 6 
     | 
    
         
            +
                  POST_METHODS ||= %w(
         
     | 
| 
       7 
7 
     | 
    
         
             
                    add delete edit note_add note_edit pipeline_add pipeline_delete
         
     | 
| 
       8 
8 
     | 
    
         
             
                    pipeline_edit stage_add stage_delete stage_edit task_add task_edit
         
     | 
| 
       9 
9 
     | 
    
         
             
                    tasktype_add tasktype_delete tasktype_edit
         
     | 
| 
       10 
     | 
    
         
            -
                  ).freeze 
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 10 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
       13 
11 
     | 
    
         | 
| 
       14 
12 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible
         
     | 
| 
       15 
13 
     | 
    
         
             
                  # naming fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       16 
     | 
    
         
            -
                  included 
     | 
| 
       17 
     | 
    
         
            -
                     
     | 
| 
      
 14 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 16 
     | 
    
         
            +
                      define_api_calls(:deal, GET_METHODS, POST_METHODS)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
       19 
19 
     | 
    
         
             
                end
         
     | 
| 
       20 
20 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Forms
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(getforms html).freeze
         
     | 
| 
       7 
5 
     | 
    
         | 
| 
       8 
6 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible
         
     | 
| 
       9 
7 
     | 
    
         
             
                  # naming fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       10 
     | 
    
         
            -
                  included 
     | 
| 
       11 
     | 
    
         
            -
                     
     | 
| 
      
 8 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 10 
     | 
    
         
            +
                      define_api_calls(:form, GET_METHODS)
         
     | 
| 
      
 11 
     | 
    
         
            +
                    end
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         
             
                end
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,18 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Groups
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(
         
     | 
| 
       5 
5 
     | 
    
         
             
                    delete delete_list list view
         
     | 
| 
       6 
     | 
    
         
            -
                  ).freeze 
     | 
| 
      
 6 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 8 
     | 
    
         
            +
                  POST_METHODS ||= %w(add edit).freeze
         
     | 
| 
       11 
9 
     | 
    
         | 
| 
       12 
10 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible
         
     | 
| 
       13 
11 
     | 
    
         
             
                  # naming fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       14 
     | 
    
         
            -
                  included 
     | 
| 
       15 
     | 
    
         
            -
                     
     | 
| 
      
 12 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 14 
     | 
    
         
            +
                      define_api_calls(:group, GET_METHODS, POST_METHODS)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    end
         
     | 
| 
       16 
16 
     | 
    
         
             
                  end
         
     | 
| 
       17 
17 
     | 
    
         
             
                end
         
     | 
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,17 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Lists
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
       5 
     | 
    
         
            -
                    delete_list delete  
     | 
| 
       6 
     | 
    
         
            -
                     
     | 
| 
       7 
     | 
    
         
            -
                  ).freeze 
     | 
| 
       8 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(
         
     | 
| 
      
 5 
     | 
    
         
            +
                    delete_list delete field_delete
         
     | 
| 
      
 6 
     | 
    
         
            +
                    field_view list paginator view
         
     | 
| 
      
 7 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
      
 8 
     | 
    
         
            +
                  POST_METHODS ||= %w(
         
     | 
| 
      
 9 
     | 
    
         
            +
                    add edit field_add field_edit
         
     | 
| 
      
 10 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
      
 11 
     | 
    
         
            +
                  DELETE_METHODS ||= [].freeze
         
     | 
| 
       10 
12 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
                   
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                     
     | 
| 
      
 13 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 14 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 15 
     | 
    
         
            +
                      define_api_calls(:list, GET_METHODS, POST_METHODS, DELETE_METHODS)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    end
         
     | 
| 
       15 
17 
     | 
    
         
             
                  end
         
     | 
| 
       16 
18 
     | 
    
         
             
                end
         
     | 
| 
       17 
19 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,20 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Messages
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
      
 4 
     | 
    
         
            +
                  GET_METHODS ||= %w(
         
     | 
| 
       5 
5 
     | 
    
         
             
                    delete_list delete list template_add template_delete_list
         
     | 
| 
       6 
6 
     | 
    
         
             
                    template_delete template_edit template_export template_import
         
     | 
| 
       7 
7 
     | 
    
         
             
                    template_list template_view view
         
     | 
| 
       8 
     | 
    
         
            -
                  ).freeze 
     | 
| 
      
 8 
     | 
    
         
            +
                  ).freeze
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 10 
     | 
    
         
            +
                  POST_METHODS ||= %w(add edit).freeze
         
     | 
| 
       13 
11 
     | 
    
         | 
| 
       14 
12 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible
         
     | 
| 
       15 
13 
     | 
    
         
             
                  # naming fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       16 
     | 
    
         
            -
                  included 
     | 
| 
       17 
     | 
    
         
            -
                     
     | 
| 
      
 14 
     | 
    
         
            +
                  def self.included(base)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    base.class_exec do
         
     | 
| 
      
 16 
     | 
    
         
            +
                      define_api_calls(:message, GET_METHODS, POST_METHODS)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
       19 
19 
     | 
    
         
             
                end
         
     | 
| 
       20 
20 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1,21 +1,17 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module ActiveCampaign
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Client
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Tracks
         
     | 
| 
       4 
     | 
    
         
            -
                  GET_METHODS  
     | 
| 
       5 
     | 
    
         
            -
                  PUT_METHODS  
     | 
| 
       6 
     | 
    
         
            -
                  POST_METHODS  
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  ).freeze unless defined?(POST_METHODS)
         
     | 
| 
       9 
     | 
    
         
            -
                  DELETE_METHODS = %w(
         
     | 
| 
       10 
     | 
    
         
            -
                    event_delete site_whitelist_delete
         
     | 
| 
       11 
     | 
    
         
            -
                  ).freeze unless defined?(DELETE_METHODS)
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                  extend ActiveSupport::Concern
         
     | 
| 
      
 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
         
     | 
| 
       14 
8 
     | 
    
         | 
| 
       15 
9 
     | 
    
         
             
                  # TODO: Create proper methods with parameter validation and possible
         
     | 
| 
       16 
10 
     | 
    
         
             
                  # naming fixes since this is one the worst APIs I have ever worked with.
         
     | 
| 
       17 
     | 
    
         
            -
                  included 
     | 
| 
       18 
     | 
    
         
            -
                     
     | 
| 
      
 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
         
     | 
| 
       19 
15 
     | 
    
         
             
                  end
         
     | 
| 
       20 
16 
     | 
    
         
             
                end
         
     | 
| 
       21 
17 
     | 
    
         
             
              end
         
     |