mautic 2.2.2 → 2.3.1

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: 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