mautic 2.3.4 → 2.3.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: afb8b76cddd73b61cfefac55cd183fd3b84603dfc1681fe00d4c524838cf5bcb
4
- data.tar.gz: 8a632817a47a0e2819a4cd74fef4798ebddf80cd9c68fdebad462bb0ca3a570d
3
+ metadata.gz: af1f088355eb05f40c5b2d22ce36e6c6319ff7e0bc7b6e62b798762a2a400724
4
+ data.tar.gz: 92867e40e6b9722094f2c174b4a40286cdac41e07c09553e11b38df4caaff4c6
5
5
  SHA512:
6
- metadata.gz: cb0312a5a188a6619421a33b4768dd5e2aa90ea6ef7764e67a7ad169e9b1ec24bf342c9eb1ce4c22958a24562c22a2c80285daa8f48c14c9df1fc2bca2603dcf
7
- data.tar.gz: 4b4b003e569e396529ece6d0971d749131996d0e0692cf33f64af21efa164820dab732b155526d3074d4e136c9ac91648180d540407523f8f4a9e9815de5ca5f
6
+ metadata.gz: 361320378ad1c77a3bd8b0a3600ad30fe5c5a95fc7aab7a934992a1fd591c23fd872b3c5aa0ebaf30e54e87997763bc3775119747ef2fa0f449a8252fd3626d2
7
+ data.tar.gz: 5a630110651bd5fd915fd05570953bdf326c513cdea05d20f0040a6628a6b9b159bf55af5e0ffca6153dab32061a2fdd9dc0f30bd4c7d82401ccf098e9f4072f
data/README.md CHANGED
@@ -88,6 +88,18 @@ mount Mautic::Engine => "/mautic"
88
88
  contact.save # => false
89
89
  contact.errors # => [{"code"=>400, "message"=>"email: This field is required.", "details"=>{"email"=>["This field is required."]}}]
90
90
  ```
91
+ Do not contact
92
+ ```ruby
93
+ contact.do_not_contact? # => false
94
+ contact.do_not_contact! message: "Some reason"
95
+ contact.do_not_contact? # => true
96
+ ```
97
+ Remove do not contact
98
+ ```ruby
99
+ contact.do_not_contact? # => true
100
+ contact.remove_do_not_contact!
101
+ contact.do_not_contact? # => false
102
+ ```
91
103
  Of course you can use more than contact: `assets`, `emails`, `companies`, `forms`, `points` ...
92
104
  ### Gem provides simple Mautic form submit
93
105
  There are two options of usage:
@@ -3,6 +3,7 @@ module Mautic
3
3
 
4
4
  alias_attribute :first_name, :firstname
5
5
  alias_attribute :last_name, :lastname
6
+
6
7
  def self.in(connection)
7
8
  Proxy.new(connection, endpoint, default_params: { search: '!is:anonymous' })
8
9
  end
@@ -13,14 +14,78 @@ module Mautic
13
14
 
14
15
  def assign_attributes(source = nil)
15
16
  super
16
- self.attributes = {
17
- tags: (source['tags'] || []).collect { |t| Mautic::Tag.new(@connection, t) }.sort_by(&:name)
18
- } if source
17
+ if source
18
+ self.attributes = {
19
+ tags: (source['tags'] || []).collect { |t| Mautic::Tag.new(@connection, t) }.sort_by(&:name),
20
+ doNotContact: source['doNotContact'] || [],
21
+ }
22
+ end
19
23
  end
20
24
 
21
25
  def events
22
26
  @proxy_events ||= Proxy.new(connection, "contacts/#{id}/events", klass: "Mautic::Event")
23
27
  end
24
28
 
29
+ # @!group Do Not Contact
30
+ # @see https://developer.mautic.org/#add-do-not-contact
31
+
32
+ def do_not_contact?
33
+ doNotContact.present?
34
+ end
35
+ alias dnc? do_not_contact?
36
+
37
+ # @return [Array[Hash]]
38
+ def do_not_contact
39
+ return unless do_not_contact?
40
+
41
+ # Based on mautic docs => Contacts constants: Contacts::UNSUBSCRIBED (1), Contacts::BOUNCED (2), Contacts::MANUAL (3)
42
+ reason_list = { 1 => :unsubscribed, 2 => :bounced, 3 => :manual }
43
+ @do_not_contact ||= doNotContact.collect do |hsh|
44
+ { reason_list[hsh["reason"]] => hsh["comments"] }
45
+ end
46
+ end
47
+
48
+ def bounced?
49
+ do_not_contact? && !!do_not_contact.detect { |dnc| dnc.key?(:bounced) }
50
+ end
51
+
52
+ def unsubscribed?
53
+ do_not_contact? && !!do_not_contact.detect { |dnc| dnc.key?(:unsubscribed) }
54
+ end
55
+
56
+ def do_not_contact!(comments: '')
57
+ begin
58
+ json = @connection.request(:post, "api/contacts/#{id}/dnc/email/add", body: { comments: comments })
59
+ self.attributes = { doNotContact: json[endpoint.singularize]["doNotContact"] }
60
+ clear_changes
61
+ rescue ValidationError => e
62
+ self.errors = e.errors
63
+ end
64
+
65
+ self.errors.blank?
66
+ end
67
+ alias add_dnc do_not_contact!
68
+
69
+ def remove_do_not_contact!
70
+ begin
71
+ json = @connection.request(:post, "api/contacts/#{id}/dnc/email/remove", body: {})
72
+ self.attributes = { doNotContact: json[endpoint.singularize]["doNotContact"] }
73
+ clear_changes
74
+ rescue ValidationError => e
75
+ self.errors = e.errors
76
+ end
77
+
78
+ self.errors.blank?
79
+ end
80
+ alias remove_dnc remove_do_not_contact!
81
+
82
+ # !endgroup
83
+
84
+ private
85
+
86
+ def clear_change
87
+ super
88
+ remove_instance_variable :@do_not_contact
89
+ end
25
90
  end
26
91
  end
@@ -1,3 +1,3 @@
1
1
  module Mautic
2
- VERSION = '2.3.4'
2
+ VERSION = '2.3.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mautic
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.4
4
+ version: 2.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukáš Pokorný
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-10 00:00:00.000000000 Z
11
+ date: 2020-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -222,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
222
222
  - !ruby/object:Gem::Version
223
223
  version: '0'
224
224
  requirements: []
225
- rubygems_version: 3.0.4
225
+ rubygems_version: 3.0.6
226
226
  signing_key:
227
227
  specification_version: 4
228
228
  summary: Ruby on Rails Mautic integration