ractive_campaign 0.1.0 → 0.1.4
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/CHANGELOG.md +33 -1
- data/Gemfile.lock +7 -7
- data/README.md +52 -9
- data/lib/active_campaign/api_attributes.rb +6 -17
- data/lib/active_campaign/api_http.rb +7 -1
- data/lib/active_campaign/models/account.rb +7 -0
- data/lib/active_campaign/models/account_contact.rb +9 -0
- data/lib/active_campaign/models/address.rb +7 -0
- data/lib/active_campaign/models/campaign.rb +7 -0
- data/lib/active_campaign/models/contact.rb +41 -28
- data/lib/active_campaign/models/contact_automation.rb +7 -0
- data/lib/active_campaign/models/contact_deal.rb +7 -0
- data/lib/active_campaign/models/contact_tag.rb +35 -2
- data/lib/active_campaign/models/custom_deal_field.rb +21 -0
- data/lib/active_campaign/models/custom_deal_field_value.rb +20 -0
- data/lib/active_campaign/models/deal.rb +17 -0
- data/lib/active_campaign/models/email_activity.rb +7 -0
- data/lib/active_campaign/models/field.rb +13 -0
- data/lib/active_campaign/models/field_value.rb +9 -0
- data/lib/active_campaign/models/list.rb +2 -38
- data/lib/active_campaign/models/model.rb +11 -7
- data/lib/active_campaign/models/note.rb +7 -0
- data/lib/active_campaign/models/pipeline.rb +18 -0
- data/lib/active_campaign/models/stage.rb +22 -0
- data/lib/active_campaign/models/tag.rb +1 -7
- data/lib/active_campaign/models/task.rb +23 -0
- data/lib/active_campaign/models/task_outcome.rb +7 -0
- data/lib/active_campaign/models/task_type.rb +13 -0
- data/lib/active_campaign/models/user.rb +15 -0
- data/lib/active_campaign/version.rb +1 -1
- data/lib/active_campaign.rb +0 -1
- data/lib/ractive_campaign.rb +3 -0
- metadata +30 -42
- data/lib/active_campaign/api_errors.rb +0 -47
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 138c40a5a3a11cfdaca62219657f9757cade906aadda7ec72d34c742370c0963
|
|
4
|
+
data.tar.gz: 1dc92c8d3b8653899c9133485d094536266d6e8e452473229ec04ca464d50f65
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 44e8d36dda391fa212172e35f1b5059477e61f517906a23289accc539b516234593633526624d9904429ce15581a3f807e08d7c18f315ad15e965889cffbd009
|
|
7
|
+
data.tar.gz: c1dffb39c97ad93b7d72004f0e625e4e09387d2b916c9d0792dde586deb8a57ebbda4e5e22b59949db9f30ff10fc1ea301b6580e9e801fb2a19254f674c47ec8
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
-
## [0.1.
|
|
3
|
+
## [0.1.4] - 2021-11-19
|
|
4
|
+
### Changed
|
|
5
|
+
|
|
6
|
+
- loading endpoint result into the correct model class
|
|
7
|
+
- README section on `install and require`
|
|
8
|
+
|
|
9
|
+
## [0.1.3] - 2021-11-18
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- account contact
|
|
13
|
+
- campaign
|
|
14
|
+
- contact automatin
|
|
15
|
+
- etc
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- attrs config
|
|
20
|
+
- README config info
|
|
21
|
+
|
|
22
|
+
## [0.1.2] - 2021-11-17
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- list
|
|
26
|
+
- etc
|
|
27
|
+
|
|
28
|
+
## [0.1.0] - 2021-11-13
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- contact
|
|
32
|
+
- tags
|
|
33
|
+
- etc
|
|
34
|
+
|
|
35
|
+
## [0.0.1] - 2021-11-10
|
|
4
36
|
|
|
5
37
|
- Initial release
|
data/Gemfile.lock
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ractive_campaign (0.1.
|
|
4
|
+
ractive_campaign (0.1.4)
|
|
5
5
|
activemodel (~> 6.1.4)
|
|
6
|
-
|
|
7
|
-
dry-configurable (~> 0.7.0)
|
|
6
|
+
dry-configurable (~> 0.12.1)
|
|
8
7
|
faraday (~> 1.8.0)
|
|
9
8
|
faraday_middleware (~> 1.2.0)
|
|
10
|
-
oj (>= 3.0, < 4.0)
|
|
11
9
|
|
|
12
10
|
GEM
|
|
13
11
|
remote: https://rubygems.org/
|
|
@@ -30,7 +28,10 @@ GEM
|
|
|
30
28
|
rexml
|
|
31
29
|
diff-lcs (1.4.4)
|
|
32
30
|
dotenv (2.7.6)
|
|
33
|
-
dry-configurable (0.
|
|
31
|
+
dry-configurable (0.12.1)
|
|
32
|
+
concurrent-ruby (~> 1.0)
|
|
33
|
+
dry-core (~> 0.5, >= 0.5.0)
|
|
34
|
+
dry-core (0.7.1)
|
|
34
35
|
concurrent-ruby (~> 1.0)
|
|
35
36
|
faraday (1.8.0)
|
|
36
37
|
faraday-em_http (~> 1.0)
|
|
@@ -62,7 +63,6 @@ GEM
|
|
|
62
63
|
method_source (1.0.0)
|
|
63
64
|
minitest (5.14.4)
|
|
64
65
|
multipart-post (2.1.1)
|
|
65
|
-
oj (3.13.9)
|
|
66
66
|
parallel (1.21.0)
|
|
67
67
|
parser (3.0.2.0)
|
|
68
68
|
ast (~> 2.4.1)
|
|
@@ -91,7 +91,7 @@ GEM
|
|
|
91
91
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
92
92
|
rspec-support (~> 3.10.0)
|
|
93
93
|
rspec-support (3.10.3)
|
|
94
|
-
rubocop (1.
|
|
94
|
+
rubocop (1.23.0)
|
|
95
95
|
parallel (~> 1.10)
|
|
96
96
|
parser (>= 3.0.0.0)
|
|
97
97
|
rainbow (>= 2.2.2, < 4.0)
|
data/README.md
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
[](https://badge.fury.io/rb/ractive_campaign) [](https://codeclimate.com/github/wedsonlima/ractive_campaign/maintainability) [](https://codeclimate.com/github/wedsonlima/ractive_campaign/test_coverage)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# RactiveCampaign
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Ruby API wrapper for ActiveCampaign API v3
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
9
9
|
Add this line to your application's Gemfile:
|
|
10
10
|
|
|
11
11
|
```ruby
|
|
12
|
-
gem
|
|
12
|
+
gem "ractive_campaign"
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
And then execute:
|
|
@@ -22,17 +22,60 @@ Or install it yourself as:
|
|
|
22
22
|
|
|
23
23
|
## Usage
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
### Config
|
|
26
|
+
|
|
27
|
+
```ruby
|
|
28
|
+
# config/initializers/ractive_campaign.rb
|
|
29
|
+
|
|
30
|
+
ActiveCampaign.configure do |config|
|
|
31
|
+
config.api_url = ENV["AC_API_URL"] # ex.: https://mystartup.api-us1.com/api/3
|
|
32
|
+
config.api_key = ENV["AC_API_KEY"]
|
|
33
|
+
end
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Examples
|
|
37
|
+
|
|
38
|
+
#### Contact
|
|
39
|
+
|
|
40
|
+
```ruby
|
|
41
|
+
# new
|
|
42
|
+
harry = ActiveCampaign::Contact.new firstName: "Harry",
|
|
43
|
+
lastName: "Potter",
|
|
44
|
+
email: "potter.hurray@hogwash.com"
|
|
45
|
+
harry.save
|
|
46
|
+
|
|
47
|
+
# create
|
|
48
|
+
hermione = ActiveCampaign::Contact.new firstName: "Hermione",
|
|
49
|
+
lastName: "Granger",
|
|
50
|
+
email: "mione@drtooth.com"
|
|
51
|
+
|
|
52
|
+
# update
|
|
53
|
+
ron = ActiveCampaign::Contact.create email: "ron1988@hogwash.com", lastName: "Weasley"
|
|
54
|
+
ron.firstName = "Ron"
|
|
55
|
+
ron.save
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
#### Tag
|
|
26
59
|
|
|
27
|
-
|
|
60
|
+
```ruby
|
|
61
|
+
ActiveCampaign::Tag.create tag: "hogwarts"
|
|
62
|
+
```
|
|
28
63
|
|
|
29
|
-
|
|
64
|
+
#### Contact tags
|
|
30
65
|
|
|
31
|
-
|
|
66
|
+
```ruby
|
|
67
|
+
harry = ActiveCampaign::Contact.find_by email: "potter.hurray@hogwash.com"
|
|
68
|
+
|
|
69
|
+
# add a contact tag
|
|
70
|
+
harry.add_tag "hogwargs"
|
|
71
|
+
|
|
72
|
+
# remove a tag
|
|
73
|
+
harry.remove_tag "hogwarts"
|
|
74
|
+
```
|
|
32
75
|
|
|
33
76
|
## Contributing
|
|
34
77
|
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
|
78
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/wedsonlima/ractive_campaign. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/ractive_campaign/blob/master/CODE_OF_CONDUCT.md).
|
|
36
79
|
|
|
37
80
|
## License
|
|
38
81
|
|
|
@@ -4,20 +4,6 @@ module ActiveCampaign
|
|
|
4
4
|
module Attributes # :nodoc:
|
|
5
5
|
extend ActiveSupport::Concern
|
|
6
6
|
|
|
7
|
-
attr_accessor :all_attrs
|
|
8
|
-
|
|
9
|
-
DEFAULT_ATTRS = %i[
|
|
10
|
-
id
|
|
11
|
-
cdate
|
|
12
|
-
created_timestamp
|
|
13
|
-
updated_timestamp
|
|
14
|
-
created_utc_timestamp
|
|
15
|
-
updated_utc_timestamp
|
|
16
|
-
created_by
|
|
17
|
-
updated_by
|
|
18
|
-
links
|
|
19
|
-
].freeze
|
|
20
|
-
|
|
21
7
|
def only_changes_to_params
|
|
22
8
|
return nil unless changed?
|
|
23
9
|
|
|
@@ -29,7 +15,7 @@ module ActiveCampaign
|
|
|
29
15
|
end
|
|
30
16
|
|
|
31
17
|
def to_params
|
|
32
|
-
iv = instance_variables -
|
|
18
|
+
iv = instance_variables - %i[@mutations_from_database @mutations_before_last_save]
|
|
33
19
|
|
|
34
20
|
{
|
|
35
21
|
self.class.root_element => iv.map { |v| [v.to_s.delete("@"), instance_variable_get(v)] }.to_h
|
|
@@ -39,6 +25,7 @@ module ActiveCampaign
|
|
|
39
25
|
module ClassMethods # :nodoc:
|
|
40
26
|
def define_attributes(*attrs)
|
|
41
27
|
attrs.each do |attr|
|
|
28
|
+
# ActiveModel's define_attribute_methods
|
|
42
29
|
define_attribute_methods attr
|
|
43
30
|
|
|
44
31
|
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
|
@@ -63,6 +50,8 @@ module ActiveCampaign
|
|
|
63
50
|
end
|
|
64
51
|
|
|
65
52
|
def instantiate_record(klass, data)
|
|
53
|
+
define_attributes(*data.keys)
|
|
54
|
+
|
|
66
55
|
record = klass.new data
|
|
67
56
|
record.clear_changes_information
|
|
68
57
|
record
|
|
@@ -75,11 +64,11 @@ module ActiveCampaign
|
|
|
75
64
|
end
|
|
76
65
|
|
|
77
66
|
def endpoint
|
|
78
|
-
name.demodulize.
|
|
67
|
+
name.demodulize.camelize(:lower).pluralize
|
|
79
68
|
end
|
|
80
69
|
|
|
81
70
|
def root_element
|
|
82
|
-
name.demodulize.
|
|
71
|
+
name.demodulize.camelize(:lower).to_sym
|
|
83
72
|
end
|
|
84
73
|
|
|
85
74
|
def root_elements
|
|
@@ -14,7 +14,13 @@ module ActiveCampaign
|
|
|
14
14
|
return {} unless [200, 201].include?(parsed_data[:status_code])
|
|
15
15
|
return {} unless parsed_data[:data].present?
|
|
16
16
|
|
|
17
|
-
data = parsed_data[:data].
|
|
17
|
+
data = if parsed_data[:data].keys.include?(root_element.to_sym)
|
|
18
|
+
parsed_data[:data][root_element.to_sym]
|
|
19
|
+
elsif parsed_data[:data].keys.include?(root_elements.to_sym)
|
|
20
|
+
parsed_data[:data][root_elements.to_sym]
|
|
21
|
+
else
|
|
22
|
+
parsed_data[:data]
|
|
23
|
+
end
|
|
18
24
|
|
|
19
25
|
if data.is_a?(Array)
|
|
20
26
|
new_records data
|
|
@@ -1,36 +1,49 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module ActiveCampaign
|
|
4
|
-
|
|
4
|
+
#
|
|
5
|
+
# @example Contacts
|
|
6
|
+
#
|
|
7
|
+
# ActiveCampaign::Contact.find(1)
|
|
8
|
+
# ActiveCampaign::Contact.find_by email: "contact-1@mail.com"
|
|
9
|
+
# ActiveCampaign::Contact.find(1).destroy
|
|
10
|
+
# ActiveCampaign::Contact.find(1).contact_tags
|
|
11
|
+
#
|
|
12
|
+
class Contact < Model
|
|
5
13
|
define_attributes :email,
|
|
6
14
|
:phone,
|
|
7
15
|
:firstName,
|
|
8
|
-
:lastName
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
16
|
+
:lastName
|
|
17
|
+
|
|
18
|
+
# @example Find contact's tags.
|
|
19
|
+
#
|
|
20
|
+
# ActiveCampaign::Contact.find(1).contact_tags
|
|
21
|
+
# ActiveCampaign::Contact.find(1).contact_tags.last.destroy
|
|
22
|
+
#
|
|
23
|
+
def contact_tags
|
|
24
|
+
ContactTag.get "#{self.class.endpoint}/#{id}/contactTags"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @example Apply a tag to a contact.
|
|
28
|
+
#
|
|
29
|
+
# ActiveCampaign::Contact.find(1).add_tag "tag-name"
|
|
30
|
+
#
|
|
31
|
+
def add_tag(tag)
|
|
32
|
+
tag_id = Tag.find_by(tag: tag)&.id
|
|
33
|
+
|
|
34
|
+
ActiveCampaign::ContactTag.create contact: id, tag: tag_id if tag_id
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# @example Remove a tag from a contact.
|
|
38
|
+
#
|
|
39
|
+
# ActiveCampaign::Contact.find(1).remove_tag "tag-name"
|
|
40
|
+
#
|
|
41
|
+
def remove_tag(tag)
|
|
42
|
+
tag_id = Tag.find_by(tag: tag)&.id
|
|
43
|
+
|
|
44
|
+
contact_tag = contact_tags.filter_map { |ct| ct if ct.tag == tag_id }.last
|
|
45
|
+
|
|
46
|
+
contact_tag&.destroy
|
|
47
|
+
end
|
|
35
48
|
end
|
|
36
49
|
end
|
|
@@ -1,7 +1,40 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module ActiveCampaign
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
#
|
|
5
|
+
# @example ContactTags
|
|
6
|
+
#
|
|
7
|
+
# contact = ActiveCampaign::Contact.find(1)
|
|
8
|
+
# tag = ActiveCampaign::Tag.find(1)
|
|
9
|
+
#
|
|
10
|
+
# ActiveCampaing::ContactTag.create contact: contact, tag: tag
|
|
11
|
+
#
|
|
12
|
+
class ContactTag < Model
|
|
13
|
+
define_attributes :contact, :tag
|
|
14
|
+
|
|
15
|
+
def create
|
|
16
|
+
self.tag = extract_id_from_tag(tag)
|
|
17
|
+
self.contact = extract_id_from_contact(contact)
|
|
18
|
+
|
|
19
|
+
super
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def extract_id_from_tag(tag)
|
|
25
|
+
case tag
|
|
26
|
+
when ::ActiveCampaign::Tag then tag.id
|
|
27
|
+
else
|
|
28
|
+
tag
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def extract_id_from_contact(contact)
|
|
33
|
+
case contact
|
|
34
|
+
when ::ActiveCampaign::Contact then contact.id
|
|
35
|
+
else
|
|
36
|
+
contact
|
|
37
|
+
end
|
|
38
|
+
end
|
|
6
39
|
end
|
|
7
40
|
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class CustomDealField < Model # :nodoc:
|
|
5
|
+
define_attributes :fieldLabel,
|
|
6
|
+
:fieldType,
|
|
7
|
+
:fieldDefault,
|
|
8
|
+
:isFormVisible,
|
|
9
|
+
:displayOrder
|
|
10
|
+
|
|
11
|
+
class << self
|
|
12
|
+
def endpoint
|
|
13
|
+
"dealCustomFieldMeta"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def root_element
|
|
17
|
+
:dealCustomFieldMetum
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class CustomDealFieldValue < Model # :nodoc:
|
|
5
|
+
define_attributes :dealId,
|
|
6
|
+
:customFieldId,
|
|
7
|
+
:fieldValue,
|
|
8
|
+
:fieldCurrency
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
def endpoint
|
|
12
|
+
"dealCustomFieldData"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def root_element
|
|
16
|
+
:dealCustomFieldDatum
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class Deal < Model # :nodoc:
|
|
5
|
+
define_attributes :contact,
|
|
6
|
+
:account,
|
|
7
|
+
:description,
|
|
8
|
+
:currency,
|
|
9
|
+
:group,
|
|
10
|
+
:owner,
|
|
11
|
+
:percent,
|
|
12
|
+
:stage,
|
|
13
|
+
:status,
|
|
14
|
+
:title,
|
|
15
|
+
:value
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -2,46 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
module ActiveCampaign
|
|
4
4
|
class List < Model # :nodoc:
|
|
5
|
-
define_attributes :
|
|
6
|
-
:
|
|
7
|
-
:name,
|
|
8
|
-
:p_use_tracking,
|
|
9
|
-
:p_use_analytics_read,
|
|
10
|
-
:p_use_analytics_link,
|
|
11
|
-
:p_use_twitter,
|
|
12
|
-
:p_use_facebook,
|
|
13
|
-
:p_embed_image,
|
|
14
|
-
:p_use_captcha,
|
|
15
|
-
:send_last_broadcast,
|
|
16
|
-
:private,
|
|
17
|
-
:analytics_domains,
|
|
18
|
-
:analytics_source,
|
|
19
|
-
:analytics_ua,
|
|
20
|
-
:twitter_token,
|
|
21
|
-
:twitter_token_secret,
|
|
22
|
-
:facebook_session,
|
|
23
|
-
:carboncopy,
|
|
24
|
-
:subscription_notify,
|
|
25
|
-
:unsubscription_notify,
|
|
26
|
-
:require_name,
|
|
27
|
-
:get_unsubscribe_reason,
|
|
28
|
-
:to_name,
|
|
29
|
-
:optinoptout,
|
|
30
|
-
:sender_name,
|
|
31
|
-
:sender_addr1,
|
|
32
|
-
:sender_addr2,
|
|
33
|
-
:sender_city,
|
|
34
|
-
:sender_state,
|
|
35
|
-
:sender_zip,
|
|
36
|
-
:sender_country,
|
|
37
|
-
:sender_phone,
|
|
5
|
+
define_attributes :name,
|
|
6
|
+
:stringid,
|
|
38
7
|
:sender_url,
|
|
39
8
|
:sender_reminder,
|
|
40
|
-
:fulladdress,
|
|
41
|
-
:optinmessageid,
|
|
42
|
-
:optoutconf,
|
|
43
|
-
:deletestamp,
|
|
44
|
-
:udate,
|
|
45
9
|
:user
|
|
46
10
|
end
|
|
47
11
|
end
|
|
@@ -8,19 +8,19 @@ module ActiveCampaign
|
|
|
8
8
|
include ActiveCampaign::ApiHttp
|
|
9
9
|
include ActiveCampaign::Attributes
|
|
10
10
|
|
|
11
|
-
define_attributes(*DEFAULT_ATTRS)
|
|
12
|
-
|
|
13
11
|
class << self
|
|
14
12
|
def all
|
|
15
13
|
get endpoint
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
def filter(args = {})
|
|
19
|
-
|
|
17
|
+
query = args.map { |k, v| "filters[#{k}]=#{v}" }.join "&"
|
|
18
|
+
|
|
19
|
+
get "#{endpoint}?#{query}"
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def find_by(args = {})
|
|
23
|
-
filter(args
|
|
23
|
+
filter(args).last
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def find(id)
|
|
@@ -37,7 +37,7 @@ module ActiveCampaign
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def save
|
|
40
|
-
return update if id.present?
|
|
40
|
+
return update if defined?(id) && id.present?
|
|
41
41
|
|
|
42
42
|
create
|
|
43
43
|
end
|
|
@@ -47,17 +47,21 @@ module ActiveCampaign
|
|
|
47
47
|
|
|
48
48
|
result = self.class.put "#{self.class.endpoint}/#{id}", only_changes_to_params
|
|
49
49
|
|
|
50
|
+
assign_attributes result.to_params.first.last
|
|
51
|
+
|
|
50
52
|
changes_applied
|
|
51
53
|
|
|
52
|
-
|
|
54
|
+
self
|
|
53
55
|
end
|
|
54
56
|
|
|
55
57
|
def create
|
|
56
58
|
result = self.class.post self.class.endpoint, to_params
|
|
57
59
|
|
|
60
|
+
assign_attributes result.to_params.first.last
|
|
61
|
+
|
|
58
62
|
changes_applied
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
self
|
|
61
65
|
end
|
|
62
66
|
|
|
63
67
|
def destroy
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class Pipeline < Model # :nodoc:
|
|
5
|
+
define_attributes :allgroups,
|
|
6
|
+
:allusers,
|
|
7
|
+
:autoassign,
|
|
8
|
+
:currency,
|
|
9
|
+
:title,
|
|
10
|
+
:users
|
|
11
|
+
|
|
12
|
+
class << self
|
|
13
|
+
def endpoint
|
|
14
|
+
"dealGroups"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class Stage < Model # :nodoc:
|
|
5
|
+
define_attributes :cardRegion1,
|
|
6
|
+
:cardRegion2,
|
|
7
|
+
:cardRegion3,
|
|
8
|
+
:cardRegion4,
|
|
9
|
+
:cardRegion5,
|
|
10
|
+
:color,
|
|
11
|
+
:dealOrder,
|
|
12
|
+
:group,
|
|
13
|
+
:order,
|
|
14
|
+
:title,
|
|
15
|
+
:width
|
|
16
|
+
class << self
|
|
17
|
+
def endpoint
|
|
18
|
+
"dealStages"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -2,12 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
module ActiveCampaign
|
|
4
4
|
class Tag < Model # :nodoc:
|
|
5
|
-
define_attributes :
|
|
6
|
-
|
|
7
|
-
class << self
|
|
8
|
-
def find_by(tag:)
|
|
9
|
-
filter({ tags: { tag: tag } }.to_query).last
|
|
10
|
-
end
|
|
11
|
-
end
|
|
5
|
+
define_attributes :tag, :tagType, :description
|
|
12
6
|
end
|
|
13
7
|
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class Task < Model # :nodoc:
|
|
5
|
+
define_attributes :title,
|
|
6
|
+
:ownerType,
|
|
7
|
+
:relid,
|
|
8
|
+
:status,
|
|
9
|
+
:note,
|
|
10
|
+
:duedate,
|
|
11
|
+
:edate,
|
|
12
|
+
:dealTasktype,
|
|
13
|
+
:assignee,
|
|
14
|
+
:triggerAutomationOnCreate,
|
|
15
|
+
:doneAutomation
|
|
16
|
+
|
|
17
|
+
class << self
|
|
18
|
+
def endpoint
|
|
19
|
+
"dealTasks"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ActiveCampaign
|
|
4
|
+
class User < Model # :nodoc:
|
|
5
|
+
class << self
|
|
6
|
+
def find_by_email(email)
|
|
7
|
+
get "#{endpoint}/email/#{email}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def find_by_username(username)
|
|
11
|
+
get "#{endpoint}/username/#{username}"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/active_campaign.rb
CHANGED
|
@@ -12,7 +12,6 @@ require "active_support/inflector"
|
|
|
12
12
|
require "active_campaign/version"
|
|
13
13
|
require "active_campaign/parser"
|
|
14
14
|
require "active_campaign/api_attributes"
|
|
15
|
-
require "active_campaign/api_errors"
|
|
16
15
|
require "active_campaign/api"
|
|
17
16
|
require "active_campaign/api_http"
|
|
18
17
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ractive_campaign
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Wedson Lima
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-11-
|
|
11
|
+
date: 2021-11-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activemodel
|
|
@@ -24,34 +24,20 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 6.1.4
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: activesupport
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: 6.1.4
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: 6.1.4
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: dry-configurable
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - "~>"
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
33
|
+
version: 0.12.1
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - "~>"
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.
|
|
40
|
+
version: 0.12.1
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: faraday
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -80,27 +66,7 @@ dependencies:
|
|
|
80
66
|
- - "~>"
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
68
|
version: 1.2.0
|
|
83
|
-
|
|
84
|
-
name: oj
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '3.0'
|
|
90
|
-
- - "<"
|
|
91
|
-
- !ruby/object:Gem::Version
|
|
92
|
-
version: '4.0'
|
|
93
|
-
type: :runtime
|
|
94
|
-
prerelease: false
|
|
95
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
96
|
-
requirements:
|
|
97
|
-
- - ">="
|
|
98
|
-
- !ruby/object:Gem::Version
|
|
99
|
-
version: '3.0'
|
|
100
|
-
- - "<"
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '4.0'
|
|
103
|
-
description: Active Campaign - API v3
|
|
69
|
+
description: Ruby API wrapper for ActiveCampaign API v3
|
|
104
70
|
email:
|
|
105
71
|
- wedson.sousa.lima@gmail.com
|
|
106
72
|
executables: []
|
|
@@ -121,19 +87,41 @@ files:
|
|
|
121
87
|
- lib/active_campaign.rb
|
|
122
88
|
- lib/active_campaign/api.rb
|
|
123
89
|
- lib/active_campaign/api_attributes.rb
|
|
124
|
-
- lib/active_campaign/api_errors.rb
|
|
125
90
|
- lib/active_campaign/api_http.rb
|
|
91
|
+
- lib/active_campaign/models/account.rb
|
|
92
|
+
- lib/active_campaign/models/account_contact.rb
|
|
93
|
+
- lib/active_campaign/models/address.rb
|
|
94
|
+
- lib/active_campaign/models/campaign.rb
|
|
126
95
|
- lib/active_campaign/models/contact.rb
|
|
96
|
+
- lib/active_campaign/models/contact_automation.rb
|
|
97
|
+
- lib/active_campaign/models/contact_deal.rb
|
|
127
98
|
- lib/active_campaign/models/contact_tag.rb
|
|
99
|
+
- lib/active_campaign/models/custom_deal_field.rb
|
|
100
|
+
- lib/active_campaign/models/custom_deal_field_value.rb
|
|
101
|
+
- lib/active_campaign/models/deal.rb
|
|
102
|
+
- lib/active_campaign/models/email_activity.rb
|
|
103
|
+
- lib/active_campaign/models/field.rb
|
|
104
|
+
- lib/active_campaign/models/field_value.rb
|
|
128
105
|
- lib/active_campaign/models/list.rb
|
|
129
106
|
- lib/active_campaign/models/model.rb
|
|
107
|
+
- lib/active_campaign/models/note.rb
|
|
108
|
+
- lib/active_campaign/models/pipeline.rb
|
|
109
|
+
- lib/active_campaign/models/stage.rb
|
|
130
110
|
- lib/active_campaign/models/tag.rb
|
|
111
|
+
- lib/active_campaign/models/task.rb
|
|
112
|
+
- lib/active_campaign/models/task_outcome.rb
|
|
113
|
+
- lib/active_campaign/models/task_type.rb
|
|
114
|
+
- lib/active_campaign/models/user.rb
|
|
131
115
|
- lib/active_campaign/parser.rb
|
|
132
116
|
- lib/active_campaign/version.rb
|
|
117
|
+
- lib/ractive_campaign.rb
|
|
133
118
|
homepage: https://github.com/wedsonlima/ractive_campaign
|
|
134
119
|
licenses:
|
|
135
120
|
- MIT
|
|
136
|
-
metadata:
|
|
121
|
+
metadata:
|
|
122
|
+
homepage_uri: https://github.com/wedsonlima/ractive_campaign
|
|
123
|
+
source_code_uri: https://github.com/wedsonlima/ractive_campaign
|
|
124
|
+
changelog_uri: https://github.com/wedsonlima/ractive_campaign/blob/main/CHANGELOG.md
|
|
137
125
|
post_install_message:
|
|
138
126
|
rdoc_options: []
|
|
139
127
|
require_paths:
|
|
@@ -152,5 +140,5 @@ requirements: []
|
|
|
152
140
|
rubygems_version: 3.0.3.1
|
|
153
141
|
signing_key:
|
|
154
142
|
specification_version: 4
|
|
155
|
-
summary:
|
|
143
|
+
summary: Ruby API wrapper for ActiveCampaign API v3
|
|
156
144
|
test_files: []
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module ActiveCampaign
|
|
4
|
-
class Error < RuntimeError # :nodoc:
|
|
5
|
-
def initialize(response = nil, exception = nil)
|
|
6
|
-
super
|
|
7
|
-
|
|
8
|
-
self.response = response
|
|
9
|
-
@exception = exception
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def message
|
|
13
|
-
if response.nil?
|
|
14
|
-
super
|
|
15
|
-
else
|
|
16
|
-
<<~MESSAGE
|
|
17
|
-
STATUS: #{response.status}
|
|
18
|
-
URL: #{env.url}
|
|
19
|
-
REQUEST HEADERS: #{env.request_headers}
|
|
20
|
-
RESPONSE_HEADERS: #{env.response_headers}
|
|
21
|
-
REQUEST_BODY: #{env.request_body}\n\n"
|
|
22
|
-
RESPONSE_BODY: #{response.body}\n\n"
|
|
23
|
-
MESSAGE
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def env
|
|
30
|
-
@env ||= response.env
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
attr_accessor :response
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class ClientError < Error
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
class UnauthorizedError < ClientError
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
class ResourceNotFound < ClientError
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
class UnprocessableEntityError < ClientError
|
|
46
|
-
end
|
|
47
|
-
end
|