mautic 2.3.1 → 2.3.7

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: 50cf7b5fa5dcc376ddb8a7e50a37c521d00ffcab8cef1b17b2e1bac598eb70aa
4
- data.tar.gz: 6a6f4890c25207a24ac1eaa0b30834e8059fec5c0f14e0392e7e902016882688
3
+ metadata.gz: 0a1c181282f3dfa4350d619d42c0abdea2b310d2ba85b2f8ca06e875e5eece65
4
+ data.tar.gz: 5f9921e8982d447ff37493791b88d0a00a37cdc6d52058c10734e23ed55eaef4
5
5
  SHA512:
6
- metadata.gz: 37cd5dae4578a9bffa5f16a9ac4341b7f9c22bf1e1f0bdbd86aab0e7ac76932d5e1106c2c33f50214f8ec9e0f51102cb68d1c718d952c42cdbaf38e24c8b6b2e
7
- data.tar.gz: ee5be0217d9e2797778ab93ff29b9bc39a23e8c0bc92bbd7aa2df59ae46008a5eb60624d4743001ef4d2e1cbda15ddd7eb24c9c2a44b495d177ff8ea53235f7e
6
+ metadata.gz: 4640a5a580ec8deb680a05eac9d558bb99d5685e84282e3d41d3edf38b4d3143a484cf3fd58f0d0fd7ac20c42a97f62144d03820540e4ad45dd9ffaf9e3b99a1
7
+ data.tar.gz: 4a12224e16bb2cd5adbf64538b81f17914699dacc84ddf57d9ba10e95b5e69c17e5672b00bfc8fe4e4d41501946d808a364c92eb3ea50269fb8ce78f2f26b9f8
data/README.md CHANGED
@@ -1,19 +1,66 @@
1
- # Mautic rails
1
+ # Mautic rails
2
+ [![Maintainability](https://api.codeclimate.com/v1/badges/c8cd605b5e021fb841d1/maintainability)](https://codeclimate.com/github/luk4s/mautic-rails/maintainability)
3
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/c8cd605b5e021fb841d1/test_coverage)](https://codeclimate.com/github/luk4s/mautic-rails/test_coverage)
4
+
2
5
  RoR helper / wrapper for Mautic API and forms
3
6
 
4
7
  *Rails 4.2.8+, 5.1+ compatible*
5
- ## Usage
6
- ### Gem provides API connection to your Mautic(s)
7
- 1. Create mautic connection
8
- 2. Authorize it
9
-
10
- In mautic you need add API oauth2 login.
11
- For URI callback allow:
12
- ```
13
- http://localhost:3000/mautic/connections/:ID/oauth2
14
- ```
15
- ID = is your Mautic::Connection ID
8
+
9
+ ## Installation
10
+ Add this line to your application's Gemfile:
11
+
12
+ ```ruby
13
+ gem 'mautic', '~> 2.3'
14
+ ```
15
+
16
+ And then execute:
17
+ ```bash
18
+ $ bundle
19
+ ```
20
+ Also you need migrate database:
21
+ ```bash
22
+ $ rails db:migrate
23
+ ```
24
+
25
+ ## Configuration
26
+
27
+ add to `config/initializers/mautic.rb`:
28
+ ```ruby
29
+ Mautic.configure do |config|
30
+ # This is for oauth handshake token url. I need to know where your app listen
31
+ config.base_url = "https://my-rails-app.com"
32
+ # OR it can be Proc
33
+ # *optional* This is your default mautic URL - used in form helper
34
+ config.mautic_url = "https://mautic.my.app"
35
+ end
36
+ ```
37
+
38
+ add to `config/routes.rb`
39
+ ```ruby
40
+ mount Mautic::Engine => "/mautic"
41
+ ```
42
+ ### Create mautic connection
16
43
 
44
+ 1. In your mautic, create new
45
+ 2. Got to `/your-mount-point/connections`
46
+ 3. Create new connection - enter URL to your mautic
47
+ 4. Copy `callback url` then go to you mautic
48
+
49
+ > In mautic you need add API oauth2 login.
50
+
51
+ > ```
52
+ > http://localhost:3000/mautic/connections/:ID/oauth2
53
+ > ```
54
+ > ID = is your Mautic::Connection ID
55
+
56
+ 5. Create new **Oauth2** API connections. Use `callback url` from previous step and copy `key` and `secret` to form in your app
57
+ 6. Update and use `Authorize` button for handshake
58
+
59
+ > For example of integration check https://github.com/luk4s/redmine_mautic
60
+
61
+
62
+ ## Usage
63
+
17
64
  Find connection which you want to use:
18
65
  ```ruby
19
66
  m = Mautic::Connection.last
@@ -41,6 +88,18 @@ RoR helper / wrapper for Mautic API and forms
41
88
  contact.save # => false
42
89
  contact.errors # => [{"code"=>400, "message"=>"email: This field is required.", "details"=>{"email"=>["This field is required."]}}]
43
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
+ ```
44
103
  Of course you can use more than contact: `assets`, `emails`, `companies`, `forms`, `points` ...
45
104
  ### Gem provides simple Mautic form submit
46
105
  There are two options of usage:
@@ -72,43 +131,6 @@ Receive webhook from mautic, parse it and prepare for use.
72
131
 
73
132
  post "webhook/:mautic_id", action: "webhook", on: :collection
74
133
 
75
-
76
- ## Installation
77
- Add this line to your application's Gemfile:
78
-
79
- ```ruby
80
- gem 'mautic', '~>0.1'
81
- ```
82
-
83
- And then execute:
84
- ```bash
85
- $ bundle
86
- ```
87
-
88
- Or install it yourself as:
89
- ```bash
90
- $ gem install mautic
91
- ```
92
-
93
- ## Configuration
94
-
95
- add to `config/initializers/mautic.rb`:
96
- ```ruby
97
- Mautic.configure do |config|
98
- # This is for oauth handshake token url. I need to know where your app listen
99
- config.base_url = "https://my-rails-app.com"
100
- # OR it can be Proc
101
- # *optional* This is your default mautic URL - used in form helper
102
- config.mautic_url = "https://mautic.my.app"
103
- end
104
- ```
105
-
106
- add to `config/routes.rb`
107
- ```ruby
108
- mount Mautic::Engine => "/mautic"
109
-
110
- ```
111
-
112
134
  ## Contributing
113
135
  Ideas and pull requests are welcome!
114
136
 
@@ -66,34 +66,37 @@ module Mautic
66
66
  def parse_response(response)
67
67
  case response.status
68
68
  when 400
69
- raise Mautic::ValidationError.new(response)
69
+ raise Mautic::ValidationError, response
70
70
  when 401
71
- json = try_to_refresh_and_parse(response)
71
+ try_to_refresh_and_parse(response)
72
72
  when 404
73
- raise Mautic::RecordNotFound.new(response)
73
+ raise Mautic::RecordNotFound, response
74
74
  when 200, 201
75
- json = JSON.parse(response.body) rescue {}
76
- Array(json['errors']).each do |error|
77
- case error['code'].to_i
78
- when 401
79
- json = try_to_refresh_and_parse(response)
80
- when 404
81
- raise Mautic::RecordNotFound.new(response)
82
- else
83
- raise Mautic::RequestError.new(response)
84
- end
85
- end
75
+ handle_success_response response
86
76
  else
87
- raise Mautic::RequestError.new(response)
77
+ raise Mautic::RequestError, response
78
+ end
79
+ end
80
+
81
+ def handle_success_response(response)
82
+ json = JSON.parse(response.body) rescue {}
83
+ Array(json['errors']).each do |error|
84
+ case error['code'].to_i
85
+ when 401
86
+ json = try_to_refresh_and_parse(response)
87
+ when 404
88
+ raise Mautic::RecordNotFound, response
89
+ else
90
+ raise Mautic::RequestError, response
91
+ end
88
92
  end
89
93
 
90
94
  json
91
95
  end
92
96
 
93
- private
94
-
95
97
  def try_to_refresh_and_parse(response)
96
- raise Mautic::TokenExpiredError.new(response) if @try_to_refresh
98
+ raise Mautic::TokenExpiredError, response if @try_to_refresh
99
+
97
100
  @try_to_refresh = true
98
101
  refresh!
99
102
  request(*@last_request)
@@ -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
@@ -11,16 +12,110 @@ module Mautic
11
12
  "#{firstname} #{lastname}"
12
13
  end
13
14
 
15
+ # @param [Hash] hash
16
+ # option hash [Integer] :id
17
+ # option hash [String] :firstName
18
+ # option hash [String] :lastName
19
+ def owner=(hash)
20
+ raise ArgumentError, "must be a hash !" unless hash.is_a?(Hash)
21
+
22
+ @table[:owner] = hash["id"]
23
+ @owner = hash
24
+ end
25
+
26
+ # @return [Hash]
27
+ # @example {id: 12, firstName: "Joe", lastName: "Doe"}
28
+ def owner
29
+ @owner || {}
30
+ end
31
+
32
+ # Assign mautic User ID as owner - for example for update author of contact
33
+ # @see https://developer.mautic.org/#edit-contact set owner
34
+ # @param [Integer] int
35
+ def owner_id=(int)
36
+ @table[:owner] = int
37
+ end
38
+
14
39
  def assign_attributes(source = nil)
15
40
  super
16
- self.attributes = {
17
- tags: (source['tags'] || []).collect { |t| Mautic::Tag.new(@connection, t) }.sort_by(&:name)
18
- } if source
41
+
42
+ if source
43
+ self.owner = source['owner'] || {}
44
+ self.attributes = {
45
+ tags: (source['tags'] || []).collect { |t| Mautic::Tag.new(@connection, t) }.sort_by(&:name),
46
+ doNotContact: source['doNotContact'] || [],
47
+ owner: owner['id'],
48
+ }
49
+ end
19
50
  end
20
51
 
21
52
  def events
22
53
  @proxy_events ||= Proxy.new(connection, "contacts/#{id}/events", klass: "Mautic::Event")
23
54
  end
24
55
 
56
+ # @!group Do Not Contact
57
+ # @see https://developer.mautic.org/#add-do-not-contact
58
+
59
+ def do_not_contact?
60
+ doNotContact.present?
61
+ end
62
+
63
+ alias dnc? do_not_contact?
64
+
65
+ # @return [Array[Hash]]
66
+ def do_not_contact
67
+ return unless do_not_contact?
68
+
69
+ # Based on mautic docs => Contacts constants: Contacts::UNSUBSCRIBED (1), Contacts::BOUNCED (2), Contacts::MANUAL (3)
70
+ reason_list = { 1 => :unsubscribed, 2 => :bounced, 3 => :manual }
71
+ @do_not_contact ||= doNotContact.collect do |hsh|
72
+ { reason_list[hsh["reason"]] => hsh["comments"] }
73
+ end
74
+ end
75
+
76
+ def bounced?
77
+ do_not_contact? && !!do_not_contact.detect { |dnc| dnc.key?(:bounced) }
78
+ end
79
+
80
+ def unsubscribed?
81
+ do_not_contact? && !!do_not_contact.detect { |dnc| dnc.key?(:unsubscribed) }
82
+ end
83
+
84
+ def do_not_contact!(comments: '')
85
+ begin
86
+ json = @connection.request(:post, "api/contacts/#{id}/dnc/email/add", body: { comments: comments })
87
+ self.attributes = { doNotContact: json[endpoint.singularize]["doNotContact"] }
88
+ clear_changes
89
+ rescue ValidationError => e
90
+ self.errors = e.errors
91
+ end
92
+
93
+ self.errors.blank?
94
+ end
95
+
96
+ alias add_dnc do_not_contact!
97
+
98
+ def remove_do_not_contact!
99
+ begin
100
+ json = @connection.request(:post, "api/contacts/#{id}/dnc/email/remove", body: {})
101
+ self.attributes = { doNotContact: json[endpoint.singularize]["doNotContact"] }
102
+ clear_changes
103
+ rescue ValidationError => e
104
+ self.errors = e.errors
105
+ end
106
+
107
+ self.errors.blank?
108
+ end
109
+
110
+ alias remove_dnc remove_do_not_contact!
111
+
112
+ # !endgroup
113
+
114
+ private
115
+
116
+ def clear_change
117
+ super
118
+ remove_instance_variable :@do_not_contact
119
+ end
25
120
  end
26
121
  end
@@ -2,7 +2,7 @@ module Mautic
2
2
  class Form < Model
3
3
 
4
4
  def assign_attributes(source = nil)
5
- self.attributes = {name: source['name'], fields: source['fields']} if source.is_a? Hash
5
+ self.attributes = { name: source['name'], fields: source['fields'] } if source.is_a? Hash
6
6
  end
7
7
 
8
8
  end
@@ -1,13 +1,13 @@
1
- <%#= form_with(model: mautic_connection.becomes(Mautic::Connection), local: true) do |form| %>
2
1
  <%= form_for(mautic_connection.becomes(Mautic::Connection)) do |form| %>
3
2
  <% if mautic_connection.errors.any? %>
4
3
  <div id="error_explanation">
5
- <h2><%= pluralize(mautic_connection.errors.count, "error") %> prohibited this mautic_connection from being saved:</h2>
4
+ <h2><%= pluralize(mautic_connection.errors.count, "error") %> prohibited this mautic_connection from being
5
+ saved:</h2>
6
6
 
7
7
  <ul>
8
- <% mautic_connection.errors.full_messages.each do |message| %>
9
- <li><%= message %></li>
10
- <% end %>
8
+ <% mautic_connection.errors.full_messages.each do |message| %>
9
+ <li><%= message %></li>
10
+ <% end %>
11
11
  </ul>
12
12
  </div>
13
13
  <% end %>
@@ -21,17 +21,23 @@
21
21
  <%= form.label :url %>
22
22
  <%= form.text_field :url, id: :mautic_connection_url %>
23
23
  </div>
24
+ <% if form.object.persisted? %>
25
+ <div class="field">
26
+ <label>Now generate pair of tokens with this callback url:</label>
27
+ <pre><%= @mautic_connection.send :callback_url %></pre>
28
+ </div>
24
29
 
25
- <div class="field">
26
- <%= form.label :client_id %>
27
- <%= form.text_field :client_id, id: :mautic_connection_client_id %>
28
- </div>
30
+ <div class="field">
31
+ <%= form.label :client_id %>
32
+ <%= form.text_field :client_id, id: :mautic_connection_client_id %>
33
+ </div>
29
34
 
30
- <div class="field">
31
- <%= form.label :secret %>
32
- <%= form.text_field :secret, id: :mautic_connection_secret %>
33
- </div>
35
+ <div class="field">
36
+ <%= form.label :secret %>
37
+ <%= form.text_field :secret, id: :mautic_connection_secret %>
38
+ </div>
34
39
 
40
+ <% end %>
35
41
  <div class="actions">
36
42
  <%= form.submit %>
37
43
  </div>
@@ -1,4 +1,3 @@
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 %>
@@ -11,12 +11,23 @@ module Mautic
11
11
 
12
12
  class RequestError < StandardError
13
13
 
14
- attr_reader :response, :errors
14
+ attr_reader :response, :errors, :request_url
15
15
 
16
16
  def initialize(response, message = nil)
17
17
  @errors ||= []
18
18
  @response = response
19
- json_body = JSON.parse(response.body) rescue {}
19
+ @request_url = response.response&.env&.url
20
+ body = if response.body.start_with? "<!DOCTYPE html>"
21
+ response.body.split("\n").last
22
+ else
23
+ response.body
24
+ end
25
+
26
+ json_body = begin
27
+ JSON.parse(body)
28
+ rescue JSON::ParserError
29
+ { "errors" => [{ "code" => response.status, "message" => body }] }
30
+ end
20
31
  message ||= Array(json_body['errors']).collect do |error|
21
32
  msg = error['code'].to_s
22
33
  msg << " (#{error['type']}):" if error['type']
@@ -25,7 +36,7 @@ module Mautic
25
36
  msg
26
37
  end.join(', ')
27
38
 
28
- super(message)
39
+ super("#{@request_url} => #{message}")
29
40
  end
30
41
 
31
42
  end
@@ -37,7 +48,11 @@ module Mautic
37
48
 
38
49
  def initialize(response, message = nil)
39
50
  @response = response
40
- json_body = JSON.parse(response.body) rescue {}
51
+ json_body = begin
52
+ JSON.parse(response.body)
53
+ rescue ParseError
54
+ {}
55
+ end
41
56
  @errors = Array(json_body['errors']).inject({}) { |mem, var| mem.merge!(var['details']); mem }
42
57
  message ||= @errors.collect { |field, msg| "#{field}: #{msg.join(', ')}" }.join('; ')
43
58
  super(response, message)
@@ -5,7 +5,8 @@ module Mautic
5
5
  config.generators do |g|
6
6
  g.test_framework :rspec, fixture: false
7
7
  end
8
-
8
+
9
+ # :nocov:
9
10
  initializer :append_migrations do |app|
10
11
  unless app.root.to_s.match root.to_s
11
12
  config.paths['db/migrate'].expanded.each do |expanded_path|
@@ -13,6 +14,7 @@ module Mautic
13
14
  end
14
15
  end
15
16
  end
17
+ # :nocov:
16
18
 
17
19
  end
18
20
  end
@@ -38,9 +38,10 @@ module Mautic
38
38
  end
39
39
 
40
40
  attr_reader :connection
41
+ attr_accessor :errors
41
42
 
42
43
  # @param [Mautic::Connection] connection
43
- def initialize(connection, hash=nil)
44
+ def initialize(connection, hash = nil)
44
45
  @connection = connection
45
46
  @table = MauticHash.new
46
47
  self.attributes = { id: hash['id'], created_at: hash['dateAdded']&.to_time, updated_at: hash['dateModified']&.to_time } if hash
@@ -58,9 +59,10 @@ module Mautic
58
59
 
59
60
  def update(force = false)
60
61
  return false if changes.blank?
62
+
61
63
  begin
62
- json = @connection.request((force && :put || :patch), "api/#{endpoint}/#{id}/edit", { body: to_h })
63
- self.attributes = json[endpoint.singularize]
64
+ json = @connection.request((force && :put || :patch), "api/#{endpoint}/#{id}/edit", body: to_mautic)
65
+ assign_attributes json[endpoint.singularize]
64
66
  clear_changes
65
67
  rescue ValidationError => e
66
68
  self.errors = e.errors
@@ -69,10 +71,18 @@ module Mautic
69
71
  self.errors.blank?
70
72
  end
71
73
 
74
+ def update_columns(attributes = {})
75
+ json = @connection.request(:patch, "api/#{endpoint}/#{id}/edit", body: to_mautic(attributes))
76
+ assign_attributes json[endpoint.singularize]
77
+ clear_changes
78
+ rescue ValidationError => e
79
+ self.errors = e.errors
80
+ end
81
+
72
82
  def create
73
83
  begin
74
- json = @connection.request(:post, "api/#{endpoint}/#{id && "#{id}/"}new", { body: to_h })
75
- self.attributes = json[endpoint.singularize]
84
+ json = @connection.request(:post, "api/#{endpoint}/#{id && "#{id}/"}new", body: to_mautic)
85
+ assign_attributes json[endpoint.singularize]
76
86
  clear_changes
77
87
  rescue ValidationError => e
78
88
  self.errors = e.errors
@@ -106,6 +116,12 @@ module Mautic
106
116
  end
107
117
  end
108
118
 
119
+ def to_mautic(data = @table)
120
+ data.each_with_object({}) do |(key, val), mem|
121
+ mem[key] = val.is_a?(Array) ? val.join("|") : val
122
+ end
123
+ end
124
+
109
125
  private
110
126
 
111
127
  def clear_changes
@@ -119,27 +135,34 @@ module Mautic
119
135
  def assign_attributes(source = nil)
120
136
  @mautic_attributes = []
121
137
  source ||= {}
138
+
139
+ data = if (fields = source['fields'])
140
+ attributes_from_fields(fields)
141
+ elsif source
142
+ source
143
+ end
144
+ self.attributes = data
145
+ end
146
+
147
+ def attributes_from_fields(fields)
122
148
  data = {}
149
+ if fields['all']
150
+ @mautic_attributes = fields['all'].collect do |key, value|
151
+ data[key] = value
152
+ Attribute.new(alias: key, value: value)
153
+ end
154
+ else
155
+ fields.each do |_group, pairs|
156
+ next unless pairs.is_a?(Hash)
123
157
 
124
- if (fields = source['fields'])
125
- if fields['all']
126
- @mautic_attributes = fields['all'].collect do |key, value|
127
- data[key] = value
128
- Attribute.new(alias: key, value: value)
129
- end
130
- else
131
- fields.each do |_group, pairs|
132
- next unless pairs.is_a?(Hash)
133
- pairs.each do |key, attrs|
134
- @mautic_attributes << (a = Attribute.new(attrs))
135
- data[key] = a.value
136
- end
158
+ pairs.each do |key, attrs|
159
+ @mautic_attributes << (a = Attribute.new(attrs))
160
+ data[key] = a.value
137
161
  end
138
162
  end
139
- elsif source
140
- data = source
141
163
  end
142
- self.attributes = data
164
+
165
+ data
143
166
  end
144
167
 
145
168
  end
@@ -23,30 +23,20 @@ module Mautic
23
23
 
24
24
  def all(options = {}, &block)
25
25
  if options[:limit] == 'all'
26
-
27
26
  options.delete(:limit)
28
-
29
- records = results = where(options)
30
- total = @last_response['total'].to_i
31
- while records.any?
32
- if block_given?
33
- records.each &block
34
- end
35
- break if results.size >= total
36
-
37
- records = where(options.merge(start: records.size))
38
- results.concat records
39
- end
27
+ limit_all(options, &block)
40
28
  else
41
29
  results = where(options)
42
30
  results.each { |i| yield i } if block_given?
31
+ results
43
32
  end
44
- results
45
33
  end
46
34
 
35
+ # @param [Hash] params
36
+ # @see https://developer.mautic.org
47
37
  def where(params = {})
48
38
  q = params.reverse_merge(@options[:default_params] || {})
49
- json = @connection.request(:get, "api/#{@endpoint}", { params: q })
39
+ json = @connection.request(:get, "api/#{@endpoint}", params: q)
50
40
  @count = json["total"].to_i
51
41
  @last_response = json
52
42
  json[data_name].collect do |id, attributes|
@@ -71,5 +61,22 @@ module Mautic
71
61
  @count = json["total"].to_i
72
62
  end
73
63
 
64
+ protected
65
+
66
+ # @param [Hash] options
67
+ # @option options (see #where)
68
+ def limit_all(options, &block)
69
+ records = results = where(options)
70
+ total = @last_response['total'].to_i
71
+ while records.any?
72
+ records.each(&block) if block_given?
73
+ break if results.size >= total
74
+
75
+ records = where(options.merge(start: records.size))
76
+ results.concat records
77
+ end
78
+ results
79
+ end
80
+
74
81
  end
75
82
  end
@@ -1,3 +1,3 @@
1
1
  module Mautic
2
- VERSION = '2.3.1'
2
+ VERSION = '2.3.7'
3
3
  end
@@ -1,6 +1,8 @@
1
1
  ENV['RAILS_ENV'] ||= 'test'
2
2
  require 'simplecov'
3
- SimpleCov.start
3
+ SimpleCov.start do
4
+ add_filter "/spec/"
5
+ end
4
6
 
5
7
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
6
8
  # Prevent database truncation if the environment is production
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.1
4
+ version: 2.3.7
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-03-16 00:00:00.000000000 Z
11
+ date: 2020-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -58,84 +58,84 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.3.6
61
+ version: '1.4'
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.6
68
+ version: '1.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.7'
75
+ version: '3.9'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.7'
82
+ version: '3.9'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: factory_bot_rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '4.8'
89
+ version: '5.1'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '4.8'
96
+ version: '5.1'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: database_cleaner
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.6'
103
+ version: '1.7'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.6'
110
+ version: '1.7'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: faker
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.8'
117
+ version: '2.7'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.8'
124
+ version: '2.7'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: webmock
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.4'
131
+ version: '3.7'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.4'
138
+ version: '3.7'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: pry-rails
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -205,7 +205,8 @@ files:
205
205
  homepage: https://github.com/luk4s/mautic-rails
206
206
  licenses:
207
207
  - MIT
208
- metadata: {}
208
+ metadata:
209
+ allowed_push_host: https://rubygems.org
209
210
  post_install_message:
210
211
  rdoc_options: []
211
212
  require_paths:
@@ -221,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
221
222
  - !ruby/object:Gem::Version
222
223
  version: '0'
223
224
  requirements: []
224
- rubygems_version: 3.0.2
225
+ rubygems_version: 3.0.8
225
226
  signing_key:
226
227
  specification_version: 4
227
228
  summary: Ruby on Rails Mautic integration