active_campaign 0.0.12 → 0.1.1
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/.ruby-version +1 -0
- data/Gemfile +26 -0
- data/active_campaign.gemspec +6 -11
- data/lib/active_campaign.rb +26 -17
- data/lib/active_campaign/arguments.rb +14 -0
- data/lib/active_campaign/authentication.rb +68 -0
- data/lib/active_campaign/client.rb +201 -14
- data/lib/active_campaign/configurable.rb +84 -0
- data/lib/active_campaign/default.rb +135 -0
- data/lib/active_campaign/error.rb +93 -27
- data/lib/active_campaign/response/debugger.rb +42 -0
- data/lib/active_campaign/response/instrumentation.rb +33 -0
- data/lib/active_campaign/response/json_normalizer.rb +49 -0
- data/lib/active_campaign/response/mashify.rb +40 -0
- data/lib/active_campaign/response/parse_json.rb +83 -0
- data/lib/active_campaign/response/raise_error.rb +24 -0
- data/lib/active_campaign/version.rb +1 -1
- data/spec/active_campaign_spec.rb +3 -3
- data/spec/helper.rb +1 -1
- metadata +32 -84
- data/lib/active_campaign/configuration.rb +0 -74
- data/lib/active_campaign/connection.rb +0 -52
- data/lib/active_campaign/param_validation.rb +0 -12
- data/lib/active_campaign/request.rb +0 -84
- data/lib/faraday/response/body_logger.rb +0 -37
- data/lib/faraday/response/json_normalizer.rb +0 -46
- data/lib/faraday/response/raise_active_campaign_error.rb +0 -25
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'multi_json'
|
2
|
-
|
3
|
-
module ActiveCampaign
|
4
|
-
module Request
|
5
|
-
|
6
|
-
def delete(api_method, options={})
|
7
|
-
request(:delete, api_method, options).body
|
8
|
-
end
|
9
|
-
|
10
|
-
def get(api_method, options={})
|
11
|
-
request(:get, api_method, options).body
|
12
|
-
end
|
13
|
-
|
14
|
-
def patch(api_method, options={})
|
15
|
-
request(:patch, api_method, options).body
|
16
|
-
end
|
17
|
-
|
18
|
-
def post(api_method, options={})
|
19
|
-
request(:post, api_method, options).body
|
20
|
-
rescue => e
|
21
|
-
puts e, e.backtrace
|
22
|
-
end
|
23
|
-
|
24
|
-
def put(api_method, options={})
|
25
|
-
request(:put, api_method, options).body
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
# Executes the request, checking if it was successful
|
31
|
-
#
|
32
|
-
# @return [Boolean] True on success, false otherwise
|
33
|
-
def boolean_from_response(method, api_method, options={})
|
34
|
-
request(method, api_method, options).status == 204
|
35
|
-
rescue ActiveCampaign::NotFound
|
36
|
-
false
|
37
|
-
end
|
38
|
-
|
39
|
-
def path(api_method)
|
40
|
-
"#{api_path}?#{url_params(api_method).map{|k,v| "#{k}=#{v}" }.join('&')}"
|
41
|
-
end
|
42
|
-
|
43
|
-
def url_params(api_method)
|
44
|
-
{
|
45
|
-
api_key: api_key,
|
46
|
-
api_action: api_method,
|
47
|
-
api_output: api_output,
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
def request(method, api_method, options={})
|
52
|
-
|
53
|
-
force_urlencoded = options.delete(:force_urlencoded) || false
|
54
|
-
url = options.delete(:endpoint) || api_endpoint
|
55
|
-
|
56
|
-
conn_options = {
|
57
|
-
:force_urlencoded => force_urlencoded,
|
58
|
-
:url => url
|
59
|
-
}
|
60
|
-
|
61
|
-
response = connection(conn_options).send(method) do |request|
|
62
|
-
case method
|
63
|
-
when :get, :delete, :head
|
64
|
-
options.reverse_merge!(url_params(api_method))
|
65
|
-
request.url(api_path, options)
|
66
|
-
when :patch, :post, :put
|
67
|
-
request.url(api_path, url_params(api_method))
|
68
|
-
if force_urlencoded
|
69
|
-
request.body = options unless options.empty?
|
70
|
-
else
|
71
|
-
request.body = MultiJson.dump(options) unless options.empty?
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
if ActiveCampaign.request_host
|
76
|
-
request.headers['Host'] = ActiveCampaign.request_host
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
response
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'forwardable'
|
3
|
-
|
4
|
-
module Faraday
|
5
|
-
class Response::BodyLogger < Response::Middleware
|
6
|
-
extend Forwardable
|
7
|
-
|
8
|
-
def initialize(app, logger = nil)
|
9
|
-
super(app)
|
10
|
-
@logger = logger || begin
|
11
|
-
require 'logger'
|
12
|
-
::Logger.new(STDOUT)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def_delegators :@logger, :debug, :info, :warn, :error, :fatal
|
17
|
-
|
18
|
-
def call(env)
|
19
|
-
info("#{env[:method]} #{env[:url].to_s}")
|
20
|
-
debug('request') { dump_headers(env[:request_headers]) + "\nbody: #{env[:body]}" }
|
21
|
-
super
|
22
|
-
end
|
23
|
-
|
24
|
-
def on_complete(env)
|
25
|
-
info('Status') { env[:status].to_s }
|
26
|
-
debug('response-head') { dump_headers env[:response_headers] }
|
27
|
-
debug('response-body') { env[:body] }
|
28
|
-
end
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def dump_headers(headers)
|
33
|
-
headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
Faraday.register_middleware :response, body_logger: lambda { Faraday::Response::BodyLogger }
|
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'faraday/response'
|
3
|
-
|
4
|
-
module Faraday
|
5
|
-
class Response::JsonNormalizer < Response::Middleware
|
6
|
-
def initialize(app, logger = nil)
|
7
|
-
super(app)
|
8
|
-
end
|
9
|
-
|
10
|
-
def call(environment)
|
11
|
-
@app.call(environment).on_complete do |env|
|
12
|
-
if env[:body].is_a?(Hash)
|
13
|
-
env[:body] = normalize(env[:body])
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def normalize(response)
|
21
|
-
keys, values = keys_values(response)
|
22
|
-
|
23
|
-
if keys.all?{|key| is_numeric?(key) }
|
24
|
-
response[:results] = values
|
25
|
-
keys.each do |key|
|
26
|
-
response.delete(key)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
response
|
30
|
-
end
|
31
|
-
|
32
|
-
def is_numeric?(string)
|
33
|
-
string.to_s.match(/\A[+-]?\d+\Z/) == nil ? false : true
|
34
|
-
end
|
35
|
-
|
36
|
-
def keys_values(response)
|
37
|
-
results = results(response)
|
38
|
-
[results.keys, results.values]
|
39
|
-
end
|
40
|
-
|
41
|
-
def results(response)
|
42
|
-
response.reject{|k,v| %w(result_code result_message result_output).include?(k) }
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
Faraday.register_middleware :response, json_normalizer: lambda { Faraday::Response::JsonNormalizer }
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'faraday'
|
2
|
-
require 'multi_json'
|
3
|
-
|
4
|
-
# @api private
|
5
|
-
module Faraday
|
6
|
-
class Response::RaiseActiveCampaignError < Response::Middleware
|
7
|
-
ERROR_MAP = {
|
8
|
-
400 => ActiveCampaign::BadRequest,
|
9
|
-
401 => ActiveCampaign::Unauthorized,
|
10
|
-
403 => ActiveCampaign::Forbidden,
|
11
|
-
404 => ActiveCampaign::NotFound,
|
12
|
-
406 => ActiveCampaign::NotAcceptable,
|
13
|
-
422 => ActiveCampaign::UnprocessableEntity,
|
14
|
-
500 => ActiveCampaign::InternalServerError,
|
15
|
-
501 => ActiveCampaign::NotImplemented,
|
16
|
-
502 => ActiveCampaign::BadGateway,
|
17
|
-
503 => ActiveCampaign::ServiceUnavailable
|
18
|
-
}
|
19
|
-
|
20
|
-
def on_complete(response)
|
21
|
-
key = response[:status].to_i
|
22
|
-
raise ERROR_MAP[key].new(response) if ERROR_MAP.has_key? key
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|