mautic 2.2.2 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 89cef64a0de1e7e4e5e9646ec53c483d95d8bf533918ed2560118c0f3d7652b8
4
- data.tar.gz: a0a34b7c04bb6ccc11ce78290190655103b1d7ad7f6f919fcd4e5fb30f5fbcbb
3
+ metadata.gz: 50cf7b5fa5dcc376ddb8a7e50a37c521d00ffcab8cef1b17b2e1bac598eb70aa
4
+ data.tar.gz: 6a6f4890c25207a24ac1eaa0b30834e8059fec5c0f14e0392e7e902016882688
5
5
  SHA512:
6
- metadata.gz: b666c92dbfeeb6bd73c4a29007c064c7c29bd8dbf6f9af26d4b24885a6abd7decfcb22535e93009dac190c54f0631c55ea0d2c6c28164ad7ff835355905cd12c
7
- data.tar.gz: '08a8ac1556b51dc267e84bcb20ceb2b556fe879053b0c2abe961439d9858a1106bb78cd43fa670fdd9c08dd6e3dc02b20159f8d134ae1a6cde832eb22c0b9bcd'
6
+ metadata.gz: 37cd5dae4578a9bffa5f16a9ac4341b7f9c22bf1e1f0bdbd86aab0e7ac76932d5e1106c2c33f50214f8ec9e0f51102cb68d1c718d952c42cdbaf38e24c8b6b2e
7
+ data.tar.gz: ee5be0217d9e2797778ab93ff29b9bc39a23e8c0bc92bbd7aa2df59ae46008a5eb60624d4743001ef4d2e1cbda15ddd7eb24c9c2a44b495d177ff8ea53235f7e
@@ -8,7 +8,7 @@ module Mautic
8
8
 
9
9
  protected
10
10
 
11
- # params path need +:mautic_id+
11
+ # @note params path need +:mautic_connection_id+ . => Its Mautic::Connection ID
12
12
  def webhook
13
13
  @webhook ||= Mautic::Connection.receive_webhook params
14
14
  end
@@ -10,7 +10,7 @@ module Mautic
10
10
 
11
11
  # @param [ActionController::Parameters] params
12
12
  def self.receive_webhook(params)
13
- WebHook.new(find(params.require(:mautic_id)), params)
13
+ WebHook.new(find(params.require(:mautic_connection_id)), params)
14
14
  end
15
15
 
16
16
  def client
@@ -67,6 +67,8 @@ module Mautic
67
67
  case response.status
68
68
  when 400
69
69
  raise Mautic::ValidationError.new(response)
70
+ when 401
71
+ json = try_to_refresh_and_parse(response)
70
72
  when 404
71
73
  raise Mautic::RecordNotFound.new(response)
72
74
  when 200, 201
@@ -74,10 +76,7 @@ module Mautic
74
76
  Array(json['errors']).each do |error|
75
77
  case error['code'].to_i
76
78
  when 401
77
- raise Mautic::TokenExpiredError.new(response) if @try_to_refresh
78
- @try_to_refresh = true
79
- refresh!
80
- json = request(*@last_request)
79
+ json = try_to_refresh_and_parse(response)
81
80
  when 404
82
81
  raise Mautic::RecordNotFound.new(response)
83
82
  else
@@ -91,5 +90,14 @@ module Mautic
91
90
  json
92
91
  end
93
92
 
93
+ private
94
+
95
+ def try_to_refresh_and_parse(response)
96
+ raise Mautic::TokenExpiredError.new(response) if @try_to_refresh
97
+ @try_to_refresh = true
98
+ refresh!
99
+ request(*@last_request)
100
+ end
101
+
94
102
  end
95
103
  end
@@ -14,9 +14,13 @@ module Mautic
14
14
  def assign_attributes(source = nil)
15
15
  super
16
16
  self.attributes = {
17
- tags: (source['tags'] || []).collect{|t| Mautic::Tag.new(@connection, t)}
17
+ tags: (source['tags'] || []).collect { |t| Mautic::Tag.new(@connection, t) }.sort_by(&:name)
18
18
  } if source
19
19
  end
20
20
 
21
+ def events
22
+ @proxy_events ||= Proxy.new(connection, "contacts/#{id}/events", klass: "Mautic::Event")
23
+ end
24
+
21
25
  end
22
26
  end
@@ -0,0 +1,23 @@
1
+ module Mautic
2
+ class Event < Model
3
+
4
+ def initialize(connection, hash = nil)
5
+ hash["id"] ||= hash["eventId"]
6
+ hash["dateAdded"] ||= hash["timestamp"]&.to_time
7
+ super
8
+ end
9
+
10
+ def event_label
11
+ eventLabel
12
+ end
13
+
14
+ def label
15
+ event_label.is_a?(Hash) && event_label["label"] || event_label.to_s
16
+ end
17
+
18
+ def source_url
19
+ event_label.is_a?(Hash) ? "#{connection.url}#{event_label["href"]}" : nil
20
+ end
21
+
22
+ end
23
+ end
@@ -12,7 +12,7 @@ module Mautic
12
12
 
13
13
  def form_submissions
14
14
  @forms ||= Array.wrap(@params.require("mautic.form_on_submit")).collect do |data|
15
- p = data.permit(submission: [:id, form: {}, lead: {}]).to_h
15
+ p = data.permit(submission: [:id, form: {}, lead: {}, results: {}]).to_h
16
16
  ::Mautic::Submissions::Form.new(@connection, p["submission"]) if p["submission"]
17
17
  end.compact
18
18
  end
@@ -1,3 +1,4 @@
1
1
  <h1>Editing Mautic Connection</h1>
2
2
 
3
3
  <%= render 'form', mautic_connection: @mautic_connection %>
4
+ callback_url: <%= @mautic_connection.send :callback_url %>
@@ -5,6 +5,6 @@ Mautic::Engine.routes.draw do
5
5
  get :oauth2
6
6
 
7
7
  end
8
- # post "webhook/:mautic_id", action: "webhook", on: :collection
8
+ # post "webhook/:mautic_connection_id", action: "webhook", on: :collection
9
9
  end
10
10
  end
@@ -2,15 +2,23 @@ module Mautic
2
2
  class Proxy
3
3
 
4
4
  def initialize(connection, endpoint, options = nil)
5
+ @options = options || {}
5
6
  @connection = connection
6
- klass = "Mautic::#{endpoint.classify}"
7
+ klass = @options.delete(:klass) || "Mautic::#{endpoint.classify}"
7
8
  @target = klass.safe_constantize || Mautic.const_set(endpoint.classify, Class.new(Mautic::Model))
8
9
  @endpoint = endpoint
9
- @options = options || {}
10
10
  end
11
11
 
12
12
  def new(attributes = {})
13
- @target.new(@connection, attributes)
13
+ build_instance attributes
14
+ end
15
+
16
+ def data_name
17
+ @endpoint.split("/").last
18
+ end
19
+
20
+ def build_instance(data)
21
+ @target.new(@connection, data)
14
22
  end
15
23
 
16
24
  def all(options = {}, &block)
@@ -31,17 +39,18 @@ module Mautic
31
39
  end
32
40
  else
33
41
  results = where(options)
34
- results.each{|i| yield i } if block_given?
42
+ results.each { |i| yield i } if block_given?
35
43
  end
36
44
  results
37
45
  end
38
46
 
39
47
  def where(params = {})
40
- q = params.reverse_merge(@options[:default_params] || {})
41
- json = @connection.request(:get, "api/#{@endpoint}", {params: q })
48
+ q = params.reverse_merge(@options[:default_params] || {})
49
+ json = @connection.request(:get, "api/#{@endpoint}", { params: q })
50
+ @count = json["total"].to_i
42
51
  @last_response = json
43
- json[@endpoint].collect do |id, attributes|
44
- @target.new(@connection, attributes || id)
52
+ json[data_name].collect do |id, attributes|
53
+ build_instance attributes || id
45
54
  end
46
55
  end
47
56
 
@@ -52,9 +61,15 @@ module Mautic
52
61
  def find(id)
53
62
  json = @connection.request(:get, "api/#{@endpoint}/#{id}")
54
63
  @last_response = json
55
- @target.new(@connection, json[@endpoint.singularize])
64
+ build_instance json[data_name.singularize]
56
65
  end
57
66
 
67
+ def count
68
+ return @count if defined? @count
69
+
70
+ json = @connection.request(:get, "api/#{@endpoint}", { limit: 1 })
71
+ @count = json["total"].to_i
72
+ end
58
73
 
59
74
  end
60
75
  end
@@ -3,26 +3,32 @@ module Mautic
3
3
  class Form
4
4
  attr_reader :id
5
5
 
6
+ # @param [Mautic::Connection] connection
7
+ # @param [Hash] data
6
8
  def initialize(connection, data)
7
9
  @connection = connection
8
10
  @raw = data
9
- @id = data["id"]
11
+ @id = data["id"].to_i
10
12
  end
11
13
 
14
+ # @return [Integer]
12
15
  def form_id
13
- @raw["form"]["id"]
16
+ @form_id ||= @raw["form"]["id"].to_i
14
17
  end
15
18
 
19
+ # @return [Integer]
16
20
  def contact_id
17
- @raw["lead"]["id"]
21
+ @contact_id ||= @raw["lead"]["id"]
18
22
  end
19
23
 
24
+ # @return [Mautic::Form]
20
25
  def form
21
26
  @form ||= @connection.forms.new(@raw["form"].merge("fields" => @raw["results"]))
22
27
  end
23
28
 
29
+ # @return [Mautic::Contact]
24
30
  def contact
25
- @connection.contacts.new(@raw["lead"])
31
+ @contact ||= @connection.contacts.new(@raw["lead"])
26
32
  end
27
33
  end
28
34
  end
@@ -1,3 +1,3 @@
1
1
  module Mautic
2
- VERSION = '2.2.2'
2
+ VERSION = '2.3.1'
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.2.2
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukáš Pokorný
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-01 00:00:00.000000000 Z
11
+ date: 2019-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
61
+ version: 1.3.6
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.3'
68
+ version: 1.3.6
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-rails
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -177,6 +177,7 @@ files:
177
177
  - app/models/mautic/connection.rb
178
178
  - app/models/mautic/connections/oauth2.rb
179
179
  - app/models/mautic/contact.rb
180
+ - app/models/mautic/event.rb
180
181
  - app/models/mautic/form.rb
181
182
  - app/models/mautic/tag.rb
182
183
  - app/models/mautic/web_hook.rb
@@ -220,8 +221,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
220
221
  - !ruby/object:Gem::Version
221
222
  version: '0'
222
223
  requirements: []
223
- rubyforge_project:
224
- rubygems_version: 2.7.6
224
+ rubygems_version: 3.0.2
225
225
  signing_key:
226
226
  specification_version: 4
227
227
  summary: Ruby on Rails Mautic integration