ractive_campaign 0.1.1 → 0.1.5

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: a1f97cdac78234978c3b5e8d87359883ba8844d646fd7ed2d0c41a50168537f4
4
- data.tar.gz: 55f1c00eb4a214570eb4a9d97c43e62e0d396f725769b81a62f096d111902315
3
+ metadata.gz: f0f3b24a31bfe00c8c7bbe97b2a480cb6c7d5ea0838e01b7beb79311e3ee5d43
4
+ data.tar.gz: 9ca59df1246b16a23d7640ce60552328a9e0802f438e645348e91e728cf9db66
5
5
  SHA512:
6
- metadata.gz: a86d70655730f310016ba26ea518d0e53f461479de71cd9dd72e214c07c72b86983ed499b641eb3cb866d28724bdd88513464442e5cdd4244d5f076ac1fa7c86
7
- data.tar.gz: 5b76063e260e6df6d49854111b74f4192352d3ed2b0c3d81326644519510d64194def26f22da60bd8661966a78be0d83155288bc124d7a006d70e8dc8e0a6ead
6
+ metadata.gz: 95566c3ad4cf971380b2486058f315c16cb0f8ad5263e145167d40d96ee30d22c85079a5d4ee8868b1effc8a37f7d32d2e1d30fc215f4db555bb6544f309b589
7
+ data.tar.gz: 0ea82c9eb5b94efb4e881b10b603e8c035f226630f67115f173c28dcdae4b202e011710bedf11e73df880c9118c67778a56c7efdab97619de6b18eb09335bcde
data/CHANGELOG.md CHANGED
@@ -1,5 +1,42 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.1.0] - 2021-11-10
3
+ ## [0.1.5] - 2021-11-19
4
+ ### Changed
5
+
6
+ - when adding a tag to a contact, create it if it doesn't exist
7
+
8
+ ## [0.1.4] - 2021-11-19
9
+ ### Changed
10
+
11
+ - loading endpoint result into the correct model class
12
+ - README section on `install and require`
13
+
14
+ ## [0.1.3] - 2021-11-18
15
+ ### Added
16
+
17
+ - account contact
18
+ - campaign
19
+ - contact automatin
20
+ - etc
21
+
22
+ ### Changed
23
+
24
+ - attrs config
25
+ - README config info
26
+
27
+ ## [0.1.2] - 2021-11-17
28
+ ### Added
29
+
30
+ - list
31
+ - etc
32
+
33
+ ## [0.1.0] - 2021-11-13
34
+ ### Added
35
+
36
+ - contact
37
+ - tags
38
+ - etc
39
+
40
+ ## [0.0.1] - 2021-11-10
4
41
 
5
42
  - Initial release
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ractive_campaign (0.1.1)
4
+ ractive_campaign (0.1.5)
5
5
  activemodel (~> 6.1.4)
6
- dry-configurable (~> 0.7.0)
6
+ dry-configurable (~> 0.12.1)
7
7
  faraday (~> 1.8.0)
8
8
  faraday_middleware (~> 1.2.0)
9
9
 
@@ -28,7 +28,10 @@ GEM
28
28
  rexml
29
29
  diff-lcs (1.4.4)
30
30
  dotenv (2.7.6)
31
- dry-configurable (0.7.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)
32
35
  concurrent-ruby (~> 1.0)
33
36
  faraday (1.8.0)
34
37
  faraday-em_http (~> 1.0)
@@ -88,7 +91,7 @@ GEM
88
91
  diff-lcs (>= 1.2.0, < 2.0)
89
92
  rspec-support (~> 3.10.0)
90
93
  rspec-support (3.10.3)
91
- rubocop (1.22.3)
94
+ rubocop (1.23.0)
92
95
  parallel (~> 1.10)
93
96
  parser (>= 3.0.0.0)
94
97
  rainbow (>= 2.2.2, < 4.0)
data/README.md CHANGED
@@ -1,13 +1,15 @@
1
+ [![Gem Version](https://badge.fury.io/rb/ractive_campaign.svg)](https://badge.fury.io/rb/ractive_campaign) [![Maintainability](https://api.codeclimate.com/v1/badges/c23221fc334b63af9a07/maintainability)](https://codeclimate.com/github/wedsonlima/ractive_campaign/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/c23221fc334b63af9a07/test_coverage)](https://codeclimate.com/github/wedsonlima/ractive_campaign/test_coverage)
2
+
1
3
  # RactiveCampaign
2
4
 
3
- Simple wrapper for ActiveCampaign API v3
5
+ Ruby API wrapper for ActiveCampaign API v3
4
6
 
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
8
10
 
9
11
  ```ruby
10
- gem 'ractive_campaign'
12
+ gem "ractive_campaign"
11
13
  ```
12
14
 
13
15
  And then execute:
@@ -37,11 +39,15 @@ end
37
39
 
38
40
  ```ruby
39
41
  # new
40
- harry = ActiveCampaign::Contact.new firstName: "Harry", lastName: "Potter", email: "potter.hurray@hogwash.com"
42
+ harry = ActiveCampaign::Contact.new firstName: "Harry",
43
+ lastName: "Potter",
44
+ email: "potter.hurray@hogwash.com"
41
45
  harry.save
42
46
 
43
47
  # create
44
- hermione = ActiveCampaign::Contact.new firstName: "Hermione", lastName: "Granger", email: "mione@drtooth.com"
48
+ hermione = ActiveCampaign::Contact.new firstName: "Hermione",
49
+ lastName: "Granger",
50
+ email: "mione@drtooth.com"
45
51
 
46
52
  # update
47
53
  ron = ActiveCampaign::Contact.create email: "ron1988@hogwash.com", lastName: "Weasley"
@@ -52,7 +58,7 @@ ron.save
52
58
  #### Tag
53
59
 
54
60
  ```ruby
55
- ActiveCampaign::Contact.create tag: "hogwarts"
61
+ ActiveCampaign::Tag.create tag: "hogwarts"
56
62
  ```
57
63
 
58
64
  #### Contact tags
@@ -69,7 +75,7 @@ harry.remove_tag "hogwarts"
69
75
 
70
76
  ## Contributing
71
77
 
72
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/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).
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).
73
79
 
74
80
  ## License
75
81
 
@@ -10,16 +10,16 @@ module ActiveCampaign
10
10
  HTTP_METHODS.each do |method|
11
11
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
12
12
  def #{method}(path, params={})
13
- root = params.delete(:_root)
14
-
15
13
  send(:'#{method}_raw', path, params) do |parsed_data, response|
16
14
  return {} unless [200, 201].include?(parsed_data[:status_code])
17
15
  return {} unless parsed_data[:data].present?
18
16
 
19
- data = if root
20
- parsed_data[:data][root.to_sym]
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
21
  else
22
- parsed_data[:data].first.last
22
+ parsed_data[:data]
23
23
  end
24
24
 
25
25
  if data.is_a?(Array)
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class AccountContact < Model # :nodoc:
5
+ define_attributes :contact,
6
+ :account,
7
+ :jobTitle
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class Campaign < Model # :nodoc:
5
+ # REVIEW: only list
6
+ end
7
+ end
@@ -24,14 +24,22 @@ module ActiveCampaign
24
24
  ContactTag.get "#{self.class.endpoint}/#{id}/contactTags"
25
25
  end
26
26
 
27
- # @example Apply a tag to a contact.
27
+ # @example Add a tag to a contact.
28
28
  #
29
29
  # ActiveCampaign::Contact.find(1).add_tag "tag-name"
30
30
  #
31
- def add_tag(tag)
31
+ # Don't create the tag if it doesn't exist.
32
+ #
33
+ # ActiveCampaign::Contact.find(1).add_tag "tag-name", create_if_not_found: false
34
+ #
35
+ def add_tag(tag, create_if_not_found: true)
32
36
  tag_id = Tag.find_by(tag: tag)&.id
33
37
 
34
- ActiveCampaign::ContactTag.create contact: id, tag: tag_id if tag_id
38
+ tag_id = ActiveCampaign::Tag.create(tag: tag)&.id if !tag_id && create_if_not_found
39
+
40
+ return false unless tag_id
41
+
42
+ ActiveCampaign::ContactTag.create contact: id, tag: tag_id
35
43
  end
36
44
 
37
45
  # @example Remove a tag from a contact.
@@ -41,6 +49,8 @@ module ActiveCampaign
41
49
  def remove_tag(tag)
42
50
  tag_id = Tag.find_by(tag: tag)&.id
43
51
 
52
+ return false unless tag_id
53
+
44
54
  contact_tag = contact_tags.filter_map { |ct| ct if ct.tag == tag_id }.last
45
55
 
46
56
  contact_tag&.destroy
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class ContactAutomation < Model # :nodoc:
5
+ define_attributes :contact, :automation
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class ContactDeal < Model # :nodoc:
5
+ define_attributes :contact, :deal
6
+ end
7
+ end
@@ -4,8 +4,8 @@ module ActiveCampaign
4
4
  #
5
5
  # @example ContactTags
6
6
  #
7
- # contact = ActiveCampaign::Contact.find(email: "contact-email@mail.com")
8
- # tag = ActiveCampaign::Tag.find_by(tag: "tag-name")
7
+ # contact = ActiveCampaign::Contact.find(1)
8
+ # tag = ActiveCampaign::Tag.find(1)
9
9
  #
10
10
  # ActiveCampaing::ContactTag.create contact: contact, tag: tag
11
11
  #
@@ -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
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class EmailActivity < Model # :nodoc:
5
+ # REVIEW: only listing
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class Field < Model # :nodoc:
5
+ define_attributes :type,
6
+ :title,
7
+ :descript,
8
+ :perstag,
9
+ :defval,
10
+ :visible,
11
+ :ordernum
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class FieldValue < Model # :nodoc:
5
+ define_attributes :contact,
6
+ :field,
7
+ :value
8
+ end
9
+ end
@@ -2,46 +2,10 @@
2
2
 
3
3
  module ActiveCampaign
4
4
  class List < Model # :nodoc:
5
- define_attributes :stringid,
6
- :userid,
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
@@ -24,7 +24,7 @@ module ActiveCampaign
24
24
  end
25
25
 
26
26
  def find(id)
27
- get "#{endpoint}/#{id}", { _root: root_element }
27
+ get "#{endpoint}/#{id}"
28
28
  end
29
29
 
30
30
  def save(**args)
@@ -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
@@ -3,5 +3,11 @@
3
3
  module ActiveCampaign
4
4
  class Tag < Model # :nodoc:
5
5
  define_attributes :tag, :tagType, :description
6
+
7
+ def create
8
+ self.tagType ||= "contact"
9
+
10
+ super
11
+ end
6
12
  end
7
13
  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,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class TaskOutcome < Model # :nodoc:
5
+ define_attributes :title, :sentiment
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveCampaign
4
+ class TaskType < Model # :nodoc:
5
+ define_attributes :title, :status
6
+
7
+ class << self
8
+ def endpoint
9
+ "dealTasktypes"
10
+ end
11
+ end
12
+ end
13
+ 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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveCampaign
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.5"
5
5
  end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_campaign"
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.1
4
+ version: 0.1.5
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-16 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.7.0
33
+ version: 0.12.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.7.0
40
+ version: 0.12.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.2.0
69
- description: Active Campaign - API v3
69
+ description: Ruby API wrapper for ActiveCampaign API v3
70
70
  email:
71
71
  - wedson.sousa.lima@gmail.com
72
72
  executables: []
@@ -89,19 +89,40 @@ files:
89
89
  - lib/active_campaign/api_attributes.rb
90
90
  - lib/active_campaign/api_http.rb
91
91
  - lib/active_campaign/models/account.rb
92
+ - lib/active_campaign/models/account_contact.rb
92
93
  - lib/active_campaign/models/address.rb
94
+ - lib/active_campaign/models/campaign.rb
93
95
  - lib/active_campaign/models/contact.rb
96
+ - lib/active_campaign/models/contact_automation.rb
97
+ - lib/active_campaign/models/contact_deal.rb
94
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
95
105
  - lib/active_campaign/models/list.rb
96
106
  - lib/active_campaign/models/model.rb
97
107
  - lib/active_campaign/models/note.rb
108
+ - lib/active_campaign/models/pipeline.rb
109
+ - lib/active_campaign/models/stage.rb
98
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
99
115
  - lib/active_campaign/parser.rb
100
116
  - lib/active_campaign/version.rb
117
+ - lib/ractive_campaign.rb
101
118
  homepage: https://github.com/wedsonlima/ractive_campaign
102
119
  licenses:
103
120
  - MIT
104
- 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
125
+ documentation_uri: https://www.rubydoc.info/gems/ractive_campaign/0.1.5
105
126
  post_install_message:
106
127
  rdoc_options: []
107
128
  require_paths:
@@ -120,5 +141,5 @@ requirements: []
120
141
  rubygems_version: 3.0.3.1
121
142
  signing_key:
122
143
  specification_version: 4
123
- summary: Active Campaign - API v3
144
+ summary: Ruby API wrapper for ActiveCampaign API v3
124
145
  test_files: []