acw 1.3.0 → 1.3.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/Gemfile.lock +1 -1
- data/README.md +25 -13
- data/lib/acw/client.rb +28 -27
- data/lib/acw/helpers.rb +17 -0
- data/lib/acw/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c19f8b720097ef991c9c849fbb801c8d54eaf3b4b1a26129506481bc1a94c902
|
4
|
+
data.tar.gz: 6803935f1441129dfb7f48600d7627b0f42c665d9e48da72b83f959410cfde89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 610c728226bfb1ed0caaf403e1e369faa4c6d4325fb375cf3cbcd3f5caa629a715eb65619d4bcd2b0f947499f4734c3e93b6739d4d4de8eb7bd2bc74e9654389
|
7
|
+
data.tar.gz: a84c1ef728d660d40062bd12260dd6ef261fa34d1e62275b315b1b50db6ab789968072c74cdea01cd6f8a79ebd9128b3a6ed5d55f0ce4430dcb80570e94c0baf
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -20,7 +20,7 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
### Initialize client
|
24
24
|
|
25
25
|
```ruby
|
26
26
|
client = Acw::Client.new({
|
@@ -29,13 +29,13 @@ client = Acw::Client.new({
|
|
29
29
|
})
|
30
30
|
```
|
31
31
|
|
32
|
-
|
32
|
+
### Connection details
|
33
33
|
|
34
34
|
```ruby
|
35
35
|
client.connection
|
36
36
|
```
|
37
37
|
|
38
|
-
|
38
|
+
### Create contact - [Api Reference](https://developers.activecampaign.com/reference#create-a-contact-new)
|
39
39
|
|
40
40
|
```ruby
|
41
41
|
client.create_contact({
|
@@ -46,24 +46,36 @@ client.create_contact({
|
|
46
46
|
})
|
47
47
|
```
|
48
48
|
|
49
|
-
|
49
|
+
### Sync contact (Create or Update) - [Api Reference](https://developers.activecampaign.com/reference#create-or-update-contact-new)
|
50
50
|
|
51
51
|
```ruby
|
52
52
|
client.sync_contact({
|
53
|
+
contact: {
|
53
54
|
email: 'contact@email.com',
|
54
55
|
firstName: 'first',
|
55
56
|
lastName: 'last',
|
56
|
-
phone: '12312312'
|
57
|
+
phone: '12312312',
|
58
|
+
fieldValues: [
|
59
|
+
{
|
60
|
+
field: '1',
|
61
|
+
value: 'My Value'
|
62
|
+
},
|
63
|
+
{
|
64
|
+
field: '2',
|
65
|
+
value: 'My second value'
|
66
|
+
}
|
67
|
+
]
|
68
|
+
}
|
57
69
|
})
|
58
70
|
```
|
59
71
|
|
60
|
-
|
72
|
+
### Retrieve contact - [Api Reference](https://developers.activecampaign.com/reference#get-contact)
|
61
73
|
|
62
74
|
```ruby
|
63
75
|
client.retrieve_contact("contact_id")
|
64
76
|
```
|
65
77
|
|
66
|
-
|
78
|
+
### Retrieve contact by email
|
67
79
|
|
68
80
|
This will return an array of contacts.
|
69
81
|
|
@@ -71,13 +83,13 @@ This will return an array of contacts.
|
|
71
83
|
client.retrieve_contact_by_email("email")
|
72
84
|
```
|
73
85
|
|
74
|
-
|
86
|
+
### Retrieve lists - [Api Reference](https://developers.activecampaign.com/reference#retrieve-all-lists)
|
75
87
|
|
76
88
|
```ruby
|
77
89
|
client.retrieve_lists
|
78
90
|
```
|
79
91
|
|
80
|
-
|
92
|
+
### Create tag - [Api Reference](https://developers.activecampaign.com/reference#tags)
|
81
93
|
|
82
94
|
```ruby
|
83
95
|
client.create_tag({
|
@@ -85,7 +97,7 @@ client.create_tag({
|
|
85
97
|
})
|
86
98
|
```
|
87
99
|
|
88
|
-
|
100
|
+
### Add a tag to contact - [Api Reference](https://developers.activecampaign.com/reference#create-contact-tag)
|
89
101
|
|
90
102
|
It generates a relationship called contactTag containing an id.
|
91
103
|
|
@@ -95,7 +107,7 @@ client.add_contact_tag({
|
|
95
107
|
})
|
96
108
|
```
|
97
109
|
|
98
|
-
|
110
|
+
### Remove a tag to contact - [Api Reference](https://developers.activecampaign.com/reference#delete-contact-tag)
|
99
111
|
|
100
112
|
To remove a tag from contact just remove the relationship between them.
|
101
113
|
|
@@ -103,7 +115,7 @@ To remove a tag from contact just remove the relationship between them.
|
|
103
115
|
client.remove_contact_tag("contact_tag_id)
|
104
116
|
```
|
105
117
|
|
106
|
-
|
118
|
+
### Create field value - [Api Reference](https://developers.activecampaign.com/reference#create-fieldvalue)
|
107
119
|
|
108
120
|
It generates a relationship called fieldVaalue containing an id.
|
109
121
|
|
@@ -117,7 +129,7 @@ client.create_field_value(
|
|
117
129
|
)
|
118
130
|
```
|
119
131
|
|
120
|
-
|
132
|
+
### Update a field value - [Api Reference](https://developers.activecampaign.com/reference#update-a-custom-field-value-for-contact)
|
121
133
|
|
122
134
|
It updates a relationship called fieldVaalue containing an id.
|
123
135
|
|
data/lib/acw/client.rb
CHANGED
@@ -3,11 +3,13 @@
|
|
3
3
|
require 'excon'
|
4
4
|
require 'cgi'
|
5
5
|
require 'json'
|
6
|
+
require './lib/acw/helpers'
|
6
7
|
|
7
8
|
module Acw
|
8
9
|
class Client
|
10
|
+
include Acw::Helpers
|
11
|
+
|
9
12
|
API_VERSION = 3
|
10
|
-
Result = Struct.new(:success?, :error, :value)
|
11
13
|
|
12
14
|
def initialize(configs = {})
|
13
15
|
@config = configs
|
@@ -19,24 +21,22 @@ module Acw
|
|
19
21
|
@connection ||= Excon.new(config[:url])
|
20
22
|
end
|
21
23
|
|
22
|
-
# CONTACTS
|
23
24
|
def create_contact(args = {})
|
24
25
|
safe_http_call do
|
25
26
|
params = { contact: args }
|
26
27
|
connection.post(
|
27
28
|
path: "/api/#{API_VERSION}/contacts",
|
28
|
-
headers: headers,
|
29
|
+
headers: headers(config[:token]),
|
29
30
|
body: params.to_json
|
30
31
|
)
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
34
|
-
def sync_contact(
|
35
|
+
def sync_contact(params)
|
35
36
|
safe_http_call do
|
36
|
-
params = { contact: args }
|
37
37
|
connection.post(
|
38
38
|
path: "/api/#{API_VERSION}/contact/sync",
|
39
|
-
headers: headers,
|
39
|
+
headers: headers(config[:token]),
|
40
40
|
body: params.to_json
|
41
41
|
)
|
42
42
|
end
|
@@ -44,31 +44,38 @@ module Acw
|
|
44
44
|
|
45
45
|
def retrieve_contact(id)
|
46
46
|
safe_http_call do
|
47
|
-
connection.get(
|
47
|
+
connection.get(
|
48
|
+
path: "/api/#{API_VERSION}/contacts/#{id}",
|
49
|
+
headers: headers(config[:token])
|
50
|
+
)
|
48
51
|
end
|
49
52
|
end
|
50
53
|
|
51
54
|
def retrieve_contact_by_email(email)
|
52
55
|
safe_http_call do
|
53
56
|
uemail = CGI.escape email
|
54
|
-
connection.get(
|
57
|
+
connection.get(
|
58
|
+
path: "/api/#{API_VERSION}/contacts?search=#{uemail}",
|
59
|
+
headers: headers(config[:token])
|
60
|
+
)
|
55
61
|
end
|
56
62
|
end
|
57
63
|
|
58
|
-
# LISTS
|
59
64
|
def retrieve_lists
|
60
65
|
safe_http_call do
|
61
|
-
connection.get(
|
66
|
+
connection.get(
|
67
|
+
path: "/api/#{API_VERSION}/lists",
|
68
|
+
headers: headers(config[:token])
|
69
|
+
)
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
65
|
-
# TAGS
|
66
73
|
def create_tag(args = {})
|
67
74
|
safe_http_call do
|
68
75
|
params = { tag: args }
|
69
76
|
connection.post(
|
70
77
|
path: "/api/#{API_VERSION}/tags",
|
71
|
-
headers: headers,
|
78
|
+
headers: headers(config[:token]),
|
72
79
|
body: params.to_json
|
73
80
|
)
|
74
81
|
end
|
@@ -79,7 +86,7 @@ module Acw
|
|
79
86
|
params = { 'contactTag': args }
|
80
87
|
connection.post(
|
81
88
|
path: "/api/#{API_VERSION}/contactTags",
|
82
|
-
headers: headers,
|
89
|
+
headers: headers(config[:token]),
|
83
90
|
body: params.to_json
|
84
91
|
)
|
85
92
|
end
|
@@ -87,17 +94,19 @@ module Acw
|
|
87
94
|
|
88
95
|
def remove_contact_tag(id)
|
89
96
|
safe_http_call do
|
90
|
-
connection.delete(
|
97
|
+
connection.delete(
|
98
|
+
path: "/api/#{API_VERSION}/contactTags/#{id}",
|
99
|
+
headers: headers(config[:token])
|
100
|
+
)
|
91
101
|
end
|
92
102
|
end
|
93
103
|
|
94
|
-
# FIELD_VALUES
|
95
104
|
def create_field_value(args = {})
|
96
105
|
safe_http_call do
|
97
106
|
params = { 'fieldValue': args }
|
98
107
|
connection.post(
|
99
108
|
path: "/api/#{API_VERSION}/fieldValues",
|
100
|
-
headers: headers,
|
109
|
+
headers: headers(config[:token]),
|
101
110
|
body: params.to_json
|
102
111
|
)
|
103
112
|
end
|
@@ -108,7 +117,7 @@ module Acw
|
|
108
117
|
params = { 'fieldValue': args }
|
109
118
|
connection.put(
|
110
119
|
path: "/api/#{API_VERSION}/fieldValues/#{id}",
|
111
|
-
headers: headers,
|
120
|
+
headers: headers(config[:token]),
|
112
121
|
body: params.to_json
|
113
122
|
)
|
114
123
|
end
|
@@ -116,21 +125,13 @@ module Acw
|
|
116
125
|
|
117
126
|
private
|
118
127
|
|
119
|
-
def headers
|
120
|
-
{
|
121
|
-
'Accept': 'application/json',
|
122
|
-
'Content-Type': 'application/json',
|
123
|
-
'Api-Token': config[:token]
|
124
|
-
}
|
125
|
-
end
|
126
|
-
|
127
128
|
def safe_http_call
|
128
129
|
response = yield
|
129
130
|
raise response.body unless success_http_status(response.status)
|
130
131
|
|
131
|
-
|
132
|
+
result(true, nil, JSON.parse(response.body))
|
132
133
|
rescue StandardError => e
|
133
|
-
|
134
|
+
result(false, e.message, nil)
|
134
135
|
end
|
135
136
|
|
136
137
|
def success_http_status(status)
|
data/lib/acw/helpers.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Acw
|
2
|
+
module Helpers
|
3
|
+
Result = Struct.new(:success?, :error, :value)
|
4
|
+
|
5
|
+
def headers(token)
|
6
|
+
@headers ||= {
|
7
|
+
'Accept': 'application/json',
|
8
|
+
'Content-Type': 'application/json',
|
9
|
+
'Api-Token': token
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def result(success, error, value)
|
14
|
+
Result.new(success, error, value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/acw/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anchieta Júnior
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- bin/setup
|
158
158
|
- lib/acw.rb
|
159
159
|
- lib/acw/client.rb
|
160
|
+
- lib/acw/helpers.rb
|
160
161
|
- lib/acw/version.rb
|
161
162
|
homepage: https://github.com/anchietajunior.com/acw
|
162
163
|
licenses:
|