active_campaign 0.0.12 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|