active-campaign-simple 0.1.1 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1e11e679f32384e64051c27b84b761840e99c412c67af13d5c7a48815097689
4
- data.tar.gz: 954d8b69e0e49291aa229348bf644e81be3d937a64f7fa7fed16acbd8b0b944b
3
+ metadata.gz: 4f14ce1acb34a9a870103f2046ea7c49f1f443f3a32d3b1b5277227fabd700ee
4
+ data.tar.gz: 75887c51dd6588bc2ecfc3c474b81830960b6e520a0912958459830f71890525
5
5
  SHA512:
6
- metadata.gz: 0ee9eeeded8c7cfd774cfac05ef69b23464b94d7b7a1668534e98434a13dde533fb95d326904be87c1cc8c7270b3fbe03fd3f1047c1a17fbbc9bc28ed757d633
7
- data.tar.gz: f33762ac2f49b09846f53dffeb7c703987e09c8c947b77fbd8e2d6178a52781298059bb7f8595be61b32dac25adb0dc1337daaf1f93e2a2d84818f76801b1515
6
+ metadata.gz: 6a1d9339f80b99a526f2298946db806c6d4733922d44783255f1e1326ac9f54c292b7e5354a2f12b3a2251806be8995092f1d9f27c90868fa8df9d64ec125597
7
+ data.tar.gz: 73740f17ae33f57b391f2f8c554217bf09bd7136029e8b6fa6584acaadd5926ac8c32b466dedc810b9d7fd8a79f281a743b7d00a56c3fc92de77c438d2f05bdf
data/README.md CHANGED
@@ -33,44 +33,43 @@ ActiveCampaign.get('/contacts')
33
33
  # Get a contact
34
34
  ActiveCampaign.get('/contacts/' + id)
35
35
 
36
- # Create a new contact
36
+ # Create (post) a new contact
37
37
  # https://developers.activecampaign.com/reference#create-a-contact-new
38
- payload = {
38
+ ActiveCampaign.post('/contacts', payload: {
39
39
  contact: {
40
40
  email: 'nate@test.com',
41
41
  firstName: 'Nate',
42
42
  lastName: 'Test',
43
43
  phone: '1231231234'
44
44
  },
45
- fieldValues: {
45
+ fieldValues: [
46
46
  {
47
47
  field: '1',
48
48
  value: 'The Value for First Field'
49
- },
50
- {
51
- field: '6',
52
- value: '2008-01-20'
53
49
  }
54
- }
55
- }
56
- ActiveCampaign.post('/contacts', payload: payload)
50
+ ]
51
+ })
57
52
 
58
- # Update a contact
59
- payload = {
53
+ # Update (put) a contact
54
+ ActiveCampaign.put('/contacts/' + id, payload: {
60
55
  contact: {
61
- email: 'nate@test.com',
62
- },
63
- fieldValues: {
64
- {
65
- field: '1',
66
- value: 'The Value for First Field'
67
- },
56
+ email: 'nate@test.com'
68
57
  }
69
- }
70
- ActiveCampaign.post('/contacts/' + id, payload: payload)
58
+ })
71
59
 
72
60
  # Delete a contact
73
61
  ActiveCampaign.delete('/contacts/' + id)
62
+
63
+ # Search for a contact
64
+ ActiveCampaign.get('/contacts', query: { email: 'test@test.com' })
65
+
66
+ # Event Tracking
67
+ # See: https://developers.activecampaign.com/reference#track-event
68
+ # NOTE - The tracking API is different from all other calls as it changes the arguments a little to simplify.
69
+ ActiveCampaign.track_event('event-key', 'actid', 'event-name', 'email')
70
+
71
+ # or with optional eventdata
72
+ ActiveCampaign.track_event('event-key', 'actid', 'event-name', 'email', 'eventdata')
74
73
  ```
75
74
 
76
75
  ## <a name="contributing">Contributing</a>
@@ -0,0 +1,25 @@
1
+ module ActiveCampaign
2
+ class Event
3
+
4
+ class << self
5
+ # Post event
6
+ def post_event(key, actid, event, email, eventdata=nil)
7
+ # header = { content_type: 'application/x-www-form-urlencoded' }
8
+ form = {
9
+ key: key,
10
+ actid: actid,
11
+ event: event,
12
+ # visit: URI.encode_www_form_component{ email: email },
13
+ visit: { email: email }
14
+ }
15
+ form.merge!({ eventdata: eventdata }) if eventdata
16
+
17
+ resp = RestClient.post("https://trackcmp.net/event", form)
18
+ rescue RestClient::ExceptionWithResponse => err
19
+ raise APIError, err
20
+ else
21
+ return resp.body if resp.body # Some calls respond w nothing
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ require 'active-campaign-simple/exceptions'
2
+
3
+ module ActiveCampaign
4
+ class ExceptionHandler
5
+
6
+ ERRORS = {
7
+ '404 Not Found' => ActiveCampaign::NotFoundError
8
+ }
9
+
10
+ def initialize(error)
11
+ error_class = ERRORS[error.message]
12
+ if error_class
13
+ raise error_class, error
14
+ else
15
+ raise ActiveCampaign::StandardError(error)
16
+ end
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ class ActiveCampaignAPIError < StandardError
2
+ def initialize(error)
3
+ ActiveCampaign.api_logger.error "ERROR: #{error}"
4
+ super(error)
5
+ end
6
+ end
7
+
8
+ module ActiveCampaign
9
+ class NotFoundError < ActiveCampaignAPIError; end
10
+ class StandardError < ActiveCampaignAPIError; end
11
+ end
@@ -1,11 +1,12 @@
1
1
  require 'rest-client'
2
- require 'active-campaign-simple/api_error'
2
+ require 'active-campaign-simple/exception_handler'
3
+ require 'active-campaign-simple/event'
3
4
 
4
5
  module ActiveCampaign
5
6
  module Request
6
7
  # Perform an GET request
7
- def get(path)
8
- request(:get, path)
8
+ def get(path, query: {})
9
+ request(:get, path, {}, query)
9
10
  end
10
11
 
11
12
  # Perform an HTTP POST request
@@ -28,15 +29,21 @@ module ActiveCampaign
28
29
  request(:delete, path)
29
30
  end
30
31
 
32
+ # used for tracking events
33
+ def track_event(key, actid, event, email, eventdata=nil)
34
+ Event.post_event(key, actid, event, email, eventdata)
35
+ end
36
+
31
37
  private
32
38
 
33
39
  # Perform request
34
- def request(method, path, payload={})
40
+ def request(method, path, payload={}, query={})
35
41
  path = "/#{path}" unless path.start_with?('/')
42
+ path += "?#{URI::encode_www_form(query)}" unless query.empty?
36
43
  header = {
37
44
  'Api-Token': api_key,
38
45
  content_type: :json,
39
- accept: :json,
46
+ accept: :json
40
47
  }
41
48
  opts = {
42
49
  method: method,
@@ -46,10 +53,10 @@ module ActiveCampaign
46
53
  opts.merge!( { payload: payload.to_json }) unless payload.empty?
47
54
  resp = RestClient::Request.execute(opts)
48
55
  rescue RestClient::ExceptionWithResponse => err
49
- # log error?
50
- raise APIError, err
56
+ ActiveCampaign::ExceptionHandler.new(err)
51
57
  else
52
58
  return JSON.parse(resp.body) if resp.body # Some calls respond w nothing
53
59
  end
60
+
54
61
  end
55
62
  end
@@ -1,4 +1,4 @@
1
1
  module ActiveCampaign
2
2
  # The version of the gem
3
- VERSION = '0.1.1'.freeze unless defined?(::ActiveCampaign::VERSION)
3
+ VERSION = '0.3.1'.freeze unless defined?(::ActiveCampaign::VERSION)
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-campaign-simple
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Leavitt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-15 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -51,9 +51,11 @@ files:
51
51
  - README.md
52
52
  - active-campaign-simple.gemspec
53
53
  - lib/active-campaign-simple.rb
54
- - lib/active-campaign-simple/api_error.rb
55
54
  - lib/active-campaign-simple/client.rb
56
55
  - lib/active-campaign-simple/config.rb
56
+ - lib/active-campaign-simple/event.rb
57
+ - lib/active-campaign-simple/exception_handler.rb
58
+ - lib/active-campaign-simple/exceptions.rb
57
59
  - lib/active-campaign-simple/logger.rb
58
60
  - lib/active-campaign-simple/request.rb
59
61
  - lib/active-campaign-simple/version.rb
@@ -1,11 +0,0 @@
1
- module ActiveCampaign
2
-
3
- class APIError < StandardError
4
- def initialize(msg)
5
- ActiveCampaign.api_logger.error "ERROR: #{msg}"
6
- super(msg)
7
- end
8
- end
9
-
10
- end
11
-