mautic 0.1.8 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +1 -10
- data/app/assets/javascripts/mautic/application.js +1 -3
- data/app/controllers/mautic/connections_controller.rb +105 -1
- data/app/models/application_record.rb +3 -0
- data/app/models/mautic/connection.rb +3 -42
- data/app/models/mautic/connections/oauth2.rb +17 -4
- data/app/models/mautic/contact.rb +0 -2
- data/app/views/mautic/connections/_form.html.erb +1 -2
- data/db/migrate/20171028082047_create_mautic_mautic_connections.rb +2 -2
- data/lib/mautic.rb +3 -36
- data/lib/mautic/model.rb +22 -56
- data/lib/mautic/version.rb +1 -1
- data/spec/rails_helper.rb +0 -3
- data/spec/spec_helper.rb +25 -1
- metadata +6 -26
- data/app/controllers/concerns/mautic/connections_controller_concern.rb +0 -118
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 395ca0792f8a56986bc97cc6a267deb9c24cdb44
|
4
|
+
data.tar.gz: 15c8e1583f8ea06db7683400978c8bf064b54e77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfff68b112c2edb739a49d4d549d1165f91d728b412c4a4e24219387e23ba65b7ec4f3ddc6892ddb3206b494e85f99b1b31d3b3238bc262cdf12859d7ca337d5
|
7
|
+
data.tar.gz: 5ec16c2043356e0118c0b509a8358b8902b750645e30092b3fa50f92c21aa24de986b1ca17c91b6232a5a5ae1848ff57cb691712c7c1ab5a1d11f9c2e7181c42
|
data/README.md
CHANGED
@@ -1,18 +1,10 @@
|
|
1
1
|
# Mautic rails
|
2
2
|
RoR helper / wrapper for Mautic API and forms
|
3
3
|
|
4
|
-
*Rails 4 compatible*
|
5
4
|
## Usage
|
6
5
|
### Gem provides API connection to your Mautic(s)
|
7
6
|
1. Create mautic connection
|
8
7
|
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
|
16
8
|
|
17
9
|
Find connection which you want to use:
|
18
10
|
```ruby
|
@@ -66,7 +58,7 @@ There are two options of usage:
|
|
66
58
|
Add this line to your application's Gemfile:
|
67
59
|
|
68
60
|
```ruby
|
69
|
-
gem 'mautic'
|
61
|
+
gem 'mautic'
|
70
62
|
```
|
71
63
|
|
72
64
|
And then execute:
|
@@ -86,7 +78,6 @@ add to `config/initializers/mautic.rb`:
|
|
86
78
|
Mautic.configure do |config|
|
87
79
|
# This is for oauth handshake token url. I need to know where your app listen
|
88
80
|
config.base_url = "https://my-rails-app.com"
|
89
|
-
# OR it can be Proc
|
90
81
|
# *optional* This is your default mautic URL - used in form helper
|
91
82
|
config.mautic_url = "https://mautic.my.app"
|
92
83
|
end
|
@@ -1,5 +1,109 @@
|
|
1
1
|
module Mautic
|
2
2
|
class ConnectionsController < ApplicationController
|
3
|
-
|
3
|
+
before_action :set_mautic_connection, only: [:show, :edit, :update, :destroy, :oauth2, :authorize]
|
4
|
+
|
5
|
+
# GET /mautic_connections
|
6
|
+
def index
|
7
|
+
@mautic_connections = Connection.order(:url)
|
8
|
+
respond_to do |format|
|
9
|
+
format.html { render layout: !request.xhr? }
|
10
|
+
format.json { render json: @mautic_connections }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# GET /mautic_connections/1
|
15
|
+
def show
|
16
|
+
respond_to do |format|
|
17
|
+
format.html { render layout: !request.xhr? }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# GET /mautic_connections/new
|
22
|
+
def new
|
23
|
+
@mautic_connection = Connection.new
|
24
|
+
respond_to do |format|
|
25
|
+
format.html { render layout: !request.xhr? }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# GET /mautic_connections/1/edit
|
30
|
+
def edit
|
31
|
+
respond_to do |format|
|
32
|
+
format.html { render layout: !request.xhr? }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# POST /mautic_connections
|
37
|
+
def create
|
38
|
+
@mautic_connection = Connection.new(mautic_connection_params)
|
39
|
+
|
40
|
+
respond_to do |format|
|
41
|
+
if @mautic_connection.save
|
42
|
+
format.html { redirect_to mautic.connection_path(@mautic_connection), notice: t('mautic.text_mautic_connection_created') }
|
43
|
+
format.js { head :no_content }
|
44
|
+
format.json { render json: @mautic_connection }
|
45
|
+
else
|
46
|
+
format.html { render :new }
|
47
|
+
format.js { head :unprocessable_entity }
|
48
|
+
format.json { render json: @mautic_connection.errors, status: :unprocessable_entity }
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# PATCH/PUT /mautic_connections/1
|
54
|
+
def update
|
55
|
+
respond_to do |format|
|
56
|
+
if @mautic_connection.update(mautic_connection_params)
|
57
|
+
format.html { redirect_to mautic.connection_path(@mautic_connection), notice: t('mautic.text_mautic_connection_updated') }
|
58
|
+
format.js { head :no_content }
|
59
|
+
format.json { render json: @mautic_connection }
|
60
|
+
else
|
61
|
+
format.html { render :edit }
|
62
|
+
format.js { head :unprocessable_entity }
|
63
|
+
format.json { render json: @mautic_connection.errors, status: :unprocessable_entity }
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# DELETE /mautic_connections/1
|
69
|
+
def destroy
|
70
|
+
@mautic_connection.destroy
|
71
|
+
respond_to do |format|
|
72
|
+
format.html { redirect_to :connections, notice: t('mautic.text_mautic_connection_destroyed') }
|
73
|
+
format.js { render js: "document.getElementById('#{view_context.dom_id(@mautic_connection)}').remove()" }
|
74
|
+
format.json { render json: @mautic_connection }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# ==--==--==--==--
|
79
|
+
|
80
|
+
def authorize
|
81
|
+
redirect_to @mautic_connection.authorize
|
82
|
+
end
|
83
|
+
|
84
|
+
def oauth2
|
85
|
+
begin
|
86
|
+
response = @mautic_connection.get_code(params.require(:code))
|
87
|
+
@mautic_connection.update(token: response.token, refresh_token: response.refresh_token)
|
88
|
+
return render plain: t('mautic.text_mautic_authorize_successfully')
|
89
|
+
rescue OAuth2::Error => e
|
90
|
+
flash[:error] = e.message
|
91
|
+
end
|
92
|
+
|
93
|
+
render :show
|
94
|
+
end
|
95
|
+
|
96
|
+
private
|
97
|
+
# Use callbacks to share common setup or constraints between actions.
|
98
|
+
def set_mautic_connection
|
99
|
+
@mautic_connection = Connection.find(params[:id])
|
100
|
+
rescue ActiveRecord::RecordNotFound => e
|
101
|
+
return render head: 404, plain: e.message
|
102
|
+
end
|
103
|
+
|
104
|
+
# Only allow a trusted parameter "white list" through.
|
105
|
+
def mautic_connection_params
|
106
|
+
params.require(:connection).permit(:url, :client_id, :secret, :type)
|
107
|
+
end
|
4
108
|
end
|
5
109
|
end
|
@@ -3,8 +3,8 @@ module Mautic
|
|
3
3
|
|
4
4
|
self.table_name = 'mautic_connections'
|
5
5
|
|
6
|
-
validates :url,
|
7
|
-
validates :
|
6
|
+
validates :url, :client_id, :secret, presence: true
|
7
|
+
validates :url, format: URI::regexp(%w(http https))
|
8
8
|
|
9
9
|
alias_attribute :access_token, :token
|
10
10
|
|
@@ -39,48 +39,9 @@ module Mautic
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def request(type, path, params = {})
|
42
|
-
|
43
|
-
response = raise NotImplementedError
|
44
|
-
parse_response(response)
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def callback_url
|
50
|
-
if (conf = Mautic.config.base_url).is_a?(Proc)
|
51
|
-
conf = conf.call(self)
|
52
|
-
end
|
53
|
-
|
54
|
-
URI.parse(conf)
|
42
|
+
raise NotImplementedError
|
55
43
|
end
|
56
44
|
|
57
|
-
def parse_response(response)
|
58
|
-
case response.status
|
59
|
-
when 400
|
60
|
-
raise Mautic::ValidationError.new(response)
|
61
|
-
when 404
|
62
|
-
raise Mautic::RecordNotFound.new(response)
|
63
|
-
when 200, 201
|
64
|
-
json = JSON.parse(response.body) rescue {}
|
65
|
-
Array(json['errors']).each do |error|
|
66
|
-
case error['code'].to_i
|
67
|
-
when 401
|
68
|
-
raise Mautic::TokenExpiredError.new(response) if @try_to_refresh
|
69
|
-
@try_to_refresh = true
|
70
|
-
refresh!
|
71
|
-
json = request(*@last_request)
|
72
|
-
when 404
|
73
|
-
raise Mautic::RecordNotFound.new(response)
|
74
|
-
else
|
75
|
-
raise Mautic::RequestError.new(response)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
else
|
79
|
-
raise Mautic::RequestError.new(response)
|
80
|
-
end
|
81
|
-
|
82
|
-
json
|
83
|
-
end
|
84
45
|
|
85
46
|
end
|
86
47
|
end
|
@@ -30,15 +30,28 @@ module Mautic
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def request(type, path, params = {})
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
json = JSON.parse connection.request(type, path, params).body
|
34
|
+
Array(json['errors']).each do |error|
|
35
|
+
case error['code']
|
36
|
+
when 400
|
37
|
+
# Validation error
|
38
|
+
when 401
|
39
|
+
raise Mautic::TokenExpiredError.new(error['message']) if @try_to_refresh
|
40
|
+
@try_to_refresh = true
|
41
|
+
refresh!
|
42
|
+
json = request(type, path, params)
|
43
|
+
else
|
44
|
+
raise Mautic::AuthorizeError.new("#{error['code']} - #{error['message']}")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
json
|
36
48
|
end
|
37
49
|
|
38
50
|
private
|
39
51
|
|
40
52
|
def callback_url
|
41
|
-
|
53
|
+
# return Mautic.config.oauth2_callback_url if Mautic.config.oauth2_callback_url
|
54
|
+
uri = URI.parse(Mautic.config.base_url)
|
42
55
|
uri.path = Mautic::Engine.routes.url_helpers.oauth2_connection_path(self)
|
43
56
|
uri.to_s
|
44
57
|
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
<%= form_for(mautic_connection.becomes(Mautic::Connection)) do |form| %>
|
1
|
+
<%= form_with(model: mautic_connection.becomes(Mautic::Connection), local: true) do |form| %>
|
3
2
|
<% if mautic_connection.errors.any? %>
|
4
3
|
<div id="error_explanation">
|
5
4
|
<h2><%= pluralize(mautic_connection.errors.count, "error") %> prohibited this mautic_connection from being saved:</h2>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class CreateMauticMauticConnections < ActiveRecord::Migration
|
1
|
+
class CreateMauticMauticConnections < ActiveRecord::Migration[5.1]
|
2
2
|
def change
|
3
3
|
create_table :mautic_connections do |t|
|
4
4
|
t.string :type
|
@@ -10,7 +10,7 @@ class CreateMauticMauticConnections < ActiveRecord::Migration
|
|
10
10
|
t.string :token
|
11
11
|
t.string :refresh_token
|
12
12
|
|
13
|
-
t.timestamps
|
13
|
+
t.timestamps
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|
data/lib/mautic.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require "oauth2"
|
2
|
-
require "jquery-rails"
|
3
2
|
require "mautic/engine"
|
4
3
|
|
5
4
|
module Mautic
|
@@ -9,46 +8,14 @@ module Mautic
|
|
9
8
|
autoload :Proxy, 'mautic/proxy'
|
10
9
|
autoload :Model, 'mautic/model'
|
11
10
|
|
12
|
-
class
|
13
|
-
|
14
|
-
attr_reader :response, :errors
|
15
|
-
|
16
|
-
def initialize(response, message = nil)
|
17
|
-
@errors ||= []
|
18
|
-
@response = response
|
19
|
-
json_body = JSON.parse(response.body) rescue {}
|
20
|
-
message ||= Array(json_body['errors']).collect do |error|
|
21
|
-
msg = error['code'].to_s
|
22
|
-
msg << " (#{error['type']}):" if error['type']
|
23
|
-
msg << " #{error['message']}"
|
24
|
-
@errors << error['message']
|
25
|
-
msg
|
26
|
-
end.join(', ')
|
27
|
-
|
28
|
-
super(message)
|
29
|
-
end
|
30
|
-
|
11
|
+
class TokenExpiredError < StandardError
|
31
12
|
end
|
32
13
|
|
33
|
-
class
|
34
|
-
end
|
35
|
-
|
36
|
-
class ValidationError < RequestError
|
37
|
-
|
38
|
-
def initialize(response, message = nil)
|
39
|
-
@response = response
|
40
|
-
json_body = JSON.parse(response.body) rescue {}
|
41
|
-
@errors = Array(json_body['errors']).inject({}) { |mem, var| mem.merge!(var['details']); mem }
|
42
|
-
message ||= @errors.collect { |field, msg| "#{field}: #{msg.join(', ')}" }.join('; ')
|
43
|
-
super(response, message)
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
14
|
+
class ValidationError < StandardError
|
47
15
|
|
48
|
-
class AuthorizeError < RequestError
|
49
16
|
end
|
50
17
|
|
51
|
-
class
|
18
|
+
class AuthorizeError < StandardError
|
52
19
|
end
|
53
20
|
|
54
21
|
configure do |config|
|
data/lib/mautic/model.rb
CHANGED
@@ -15,14 +15,6 @@ module Mautic
|
|
15
15
|
|
16
16
|
end
|
17
17
|
|
18
|
-
class Attribute < OpenStruct
|
19
|
-
|
20
|
-
def name
|
21
|
-
@alias
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
18
|
class << self
|
27
19
|
|
28
20
|
def endpoint
|
@@ -38,9 +30,8 @@ module Mautic
|
|
38
30
|
def initialize(connection, hash=nil)
|
39
31
|
@connection = connection
|
40
32
|
@table = MauticHash.new
|
41
|
-
self.attributes = {
|
33
|
+
self.attributes = { created_at: hash['dateAdded']&.to_time, updated_at: hash['dateModified']&.to_time } if hash
|
42
34
|
assign_attributes(hash)
|
43
|
-
clear_changes
|
44
35
|
end
|
45
36
|
|
46
37
|
def save(force = false)
|
@@ -49,37 +40,29 @@ module Mautic
|
|
49
40
|
|
50
41
|
def update(force = false)
|
51
42
|
return false if changes.blank?
|
52
|
-
|
53
|
-
|
43
|
+
json = @connection.request((force && :put || :patch), "api/#{endpoint}/#{id}/edit", { body: to_h })
|
44
|
+
if json['errors']
|
45
|
+
self.errors = json['errors']
|
46
|
+
else
|
54
47
|
self.attributes = json[endpoint.singularize]
|
55
|
-
clear_changes
|
56
|
-
rescue ValidationError => e
|
57
|
-
self.errors = e.errors
|
58
48
|
end
|
59
|
-
|
60
|
-
self.errors.blank?
|
49
|
+
json['errors'].blank?
|
61
50
|
end
|
62
51
|
|
63
52
|
def create
|
64
|
-
|
65
|
-
|
53
|
+
json = @connection.request(:post, "api/#{endpoint}/#{id}/new", { body: to_h })
|
54
|
+
if json['errors']
|
55
|
+
self.errors = json['errors']
|
56
|
+
else
|
66
57
|
self.attributes = json[endpoint.singularize]
|
67
|
-
clear_changes
|
68
|
-
rescue ValidationError => e
|
69
|
-
self.errors = e.errors
|
70
58
|
end
|
71
|
-
|
72
|
-
self.errors.blank?
|
59
|
+
json['errors'].blank?
|
73
60
|
end
|
74
61
|
|
75
62
|
def destroy
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
rescue RequestError => e
|
80
|
-
self.errors = e.errors
|
81
|
-
false
|
82
|
-
end
|
63
|
+
json = @connection.request(:delete, "api/#{endpoint}/#{id}/delete")
|
64
|
+
self.errors = json['errors'] if json['errors']
|
65
|
+
json['errors'].blank?
|
83
66
|
end
|
84
67
|
|
85
68
|
def changes
|
@@ -90,42 +73,25 @@ module Mautic
|
|
90
73
|
@table.to_h
|
91
74
|
end
|
92
75
|
|
76
|
+
private
|
77
|
+
|
78
|
+
def endpoint
|
79
|
+
self.class.endpoint
|
80
|
+
end
|
81
|
+
|
93
82
|
def attributes=(hash)
|
94
83
|
hash.each_pair do |k, v|
|
95
84
|
k = k.to_sym
|
96
85
|
@table[k] = v
|
97
86
|
end
|
98
|
-
end
|
99
|
-
|
100
|
-
private
|
101
|
-
|
102
|
-
def clear_changes
|
103
87
|
@table.instance_variable_set(:@changes, nil)
|
104
88
|
end
|
105
89
|
|
106
|
-
def endpoint
|
107
|
-
self.class.endpoint
|
108
|
-
end
|
109
|
-
|
110
90
|
def assign_attributes(source = nil)
|
111
|
-
@mautic_attributes = []
|
112
91
|
source ||= {}
|
113
92
|
data = {}
|
114
|
-
|
115
93
|
if (fields = source['fields'])
|
116
|
-
if fields['all']
|
117
|
-
@mautic_attributes = fields['all'].collect do |key, value|
|
118
|
-
data[key] = value
|
119
|
-
Attribute.new(alias: key, value: value)
|
120
|
-
end
|
121
|
-
else
|
122
|
-
fields.each do |_group, pairs|
|
123
|
-
pairs.each do |key, attrs|
|
124
|
-
@mautic_attributes << (a = Attribute.new(attrs))
|
125
|
-
data[key] = a.value
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
94
|
+
data.merge!(fields['all']) if fields['all']
|
129
95
|
elsif source
|
130
96
|
data = source
|
131
97
|
end
|
@@ -133,4 +99,4 @@ module Mautic
|
|
133
99
|
end
|
134
100
|
|
135
101
|
end
|
136
|
-
end
|
102
|
+
end
|
data/lib/mautic/version.rb
CHANGED
data/spec/rails_helper.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
1
|
ENV['RAILS_ENV'] ||= 'test'
|
2
|
-
require 'simplecov'
|
3
|
-
SimpleCov.start
|
4
|
-
|
5
2
|
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
6
3
|
# Prevent database truncation if the environment is production
|
7
4
|
abort('The Rails environment is running in production mode!') if Rails.env.production?
|
data/spec/spec_helper.rb
CHANGED
@@ -3,7 +3,6 @@ require 'factory_bot_rails'
|
|
3
3
|
require 'database_cleaner'
|
4
4
|
require 'faker'
|
5
5
|
require 'webmock/rspec'
|
6
|
-
require 'pry-rails'
|
7
6
|
# require 'capybara/rspec'
|
8
7
|
|
9
8
|
ActiveRecord::Migration.maintain_test_schema!
|
@@ -35,6 +34,10 @@ RSpec.configure do |config|
|
|
35
34
|
end
|
36
35
|
|
37
36
|
config.include FactoryBot::Syntax::Methods
|
37
|
+
# DatabaseCleaner.clean_with(
|
38
|
+
# :truncation,
|
39
|
+
# except: %w(ar_internal_metadata)
|
40
|
+
# )
|
38
41
|
|
39
42
|
config.before(:suite) do
|
40
43
|
DatabaseCleaner.clean_with(:truncation, except: %w(ar_internal_metadata))
|
@@ -44,6 +47,10 @@ RSpec.configure do |config|
|
|
44
47
|
DatabaseCleaner.strategy = :transaction
|
45
48
|
end
|
46
49
|
|
50
|
+
config.before(:each, js: true) do
|
51
|
+
DatabaseCleaner.strategy = :truncation
|
52
|
+
end
|
53
|
+
|
47
54
|
config.before(:each) do
|
48
55
|
DatabaseCleaner.start
|
49
56
|
end
|
@@ -58,4 +65,21 @@ RSpec.configure do |config|
|
|
58
65
|
|
59
66
|
config.filter_rails_from_backtrace!
|
60
67
|
|
68
|
+
# config.before(:each) do |ex|
|
69
|
+
# meta = ex.metadata
|
70
|
+
# unless meta[:null]
|
71
|
+
# case meta[:logged]
|
72
|
+
# when :admin
|
73
|
+
# logged(Symphonia::User, FactoryBot.create(:admin_user))
|
74
|
+
# when true
|
75
|
+
# logged(Symphonia::User, FactoryBot.create(:user))
|
76
|
+
# end
|
77
|
+
# end
|
78
|
+
# end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
def logged(model, user)
|
84
|
+
allow(model).to receive(:current).and_return(user)
|
61
85
|
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: 0.1
|
4
|
+
version: 1.0.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:
|
11
|
+
date: 2017-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -16,34 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 4.2.8
|
19
|
+
version: '5.1'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 4.2.8
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: jquery-rails
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - "~>"
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '3.1'
|
40
|
-
type: :runtime
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - "~>"
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '3.1'
|
26
|
+
version: '5.1'
|
47
27
|
- !ruby/object:Gem::Dependency
|
48
28
|
name: oauth2
|
49
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,12 +166,12 @@ files:
|
|
186
166
|
- app/assets/stylesheets/mautic/application.css
|
187
167
|
- app/assets/stylesheets/mautic/mautic_connections.css
|
188
168
|
- app/assets/stylesheets/scaffold.css
|
189
|
-
- app/controllers/concerns/mautic/connections_controller_concern.rb
|
190
169
|
- app/controllers/mautic/application_controller.rb
|
191
170
|
- app/controllers/mautic/connections_controller.rb
|
192
171
|
- app/helpers/mautic/application_helper.rb
|
193
172
|
- app/jobs/mautic/application_job.rb
|
194
173
|
- app/mailers/mautic/application_mailer.rb
|
174
|
+
- app/models/application_record.rb
|
195
175
|
- app/models/mautic/application_record.rb
|
196
176
|
- app/models/mautic/connection.rb
|
197
177
|
- app/models/mautic/connections/oauth2.rb
|
@@ -235,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
235
215
|
version: '0'
|
236
216
|
requirements: []
|
237
217
|
rubyforge_project:
|
238
|
-
rubygems_version: 2.
|
218
|
+
rubygems_version: 2.6.12
|
239
219
|
signing_key:
|
240
220
|
specification_version: 4
|
241
221
|
summary: Ruby on Rails Mautic integration
|
@@ -1,118 +0,0 @@
|
|
1
|
-
module Mautic
|
2
|
-
module ConnectionsControllerConcern
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
|
7
|
-
before_action :set_mautic_connection, only: [:show, :edit, :update, :destroy, :oauth2, :authorize]
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
# GET /mautic_connections
|
13
|
-
def index
|
14
|
-
@mautic_connections = Mautic::Connection.order(:url)
|
15
|
-
respond_to do |format|
|
16
|
-
format.html { render layout: !request.xhr? }
|
17
|
-
format.json { render json: @mautic_connections }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# GET /mautic_connections/1
|
22
|
-
def show
|
23
|
-
respond_to do |format|
|
24
|
-
format.html { render layout: !request.xhr? }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# GET /mautic_connections/new
|
29
|
-
def new
|
30
|
-
@mautic_connection = Mautic::Connection.new
|
31
|
-
respond_to do |format|
|
32
|
-
format.html { render layout: !request.xhr? }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# GET /mautic_connections/1/edit
|
37
|
-
def edit
|
38
|
-
respond_to do |format|
|
39
|
-
format.html { render layout: !request.xhr? }
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# POST /mautic_connections
|
44
|
-
def create
|
45
|
-
@mautic_connection = Mautic::Connection.new(mautic_connection_params)
|
46
|
-
|
47
|
-
respond_to do |format|
|
48
|
-
if @mautic_connection.save
|
49
|
-
format.html { render(:edit, notice: t('mautic.text_mautic_connection_created')) }
|
50
|
-
format.js { head :no_content }
|
51
|
-
format.json { render json: @mautic_connection }
|
52
|
-
else
|
53
|
-
format.html { render :new }
|
54
|
-
format.js { head :unprocessable_entity }
|
55
|
-
format.json { render json: @mautic_connection.errors, status: :unprocessable_entity }
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
# PATCH/PUT /mautic_connections/1
|
61
|
-
def update
|
62
|
-
respond_to do |format|
|
63
|
-
if @mautic_connection.update(mautic_connection_params)
|
64
|
-
format.html { redirect_to({ action: :index }, notice: t('mautic.text_mautic_connection_updated')) }
|
65
|
-
format.js { head :no_content }
|
66
|
-
format.json { render json: @mautic_connection }
|
67
|
-
else
|
68
|
-
format.html { render :edit }
|
69
|
-
format.js { head :unprocessable_entity }
|
70
|
-
format.json { render json: @mautic_connection.errors, status: :unprocessable_entity }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
# DELETE /mautic_connections/1
|
76
|
-
def destroy
|
77
|
-
@mautic_connection.destroy
|
78
|
-
respond_to do |format|
|
79
|
-
format.html { redirect_to action: "index", notice: t('mautic.text_mautic_connection_destroyed') }
|
80
|
-
format.js { render js: "document.getElementById('#{view_context.dom_id(@mautic_connection)}').remove()" }
|
81
|
-
format.json { render json: @mautic_connection }
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
# ==--==--==--==--
|
86
|
-
|
87
|
-
def authorize
|
88
|
-
redirect_to @mautic_connection.authorize
|
89
|
-
end
|
90
|
-
|
91
|
-
def oauth2
|
92
|
-
begin
|
93
|
-
response = @mautic_connection.get_code(params.require(:code))
|
94
|
-
@mautic_connection.update(token: response.token, refresh_token: response.refresh_token)
|
95
|
-
return render plain: t('mautic.text_mautic_authorize_successfully')
|
96
|
-
rescue OAuth2::Error => e
|
97
|
-
flash[:error] = e.message
|
98
|
-
end
|
99
|
-
|
100
|
-
render :show
|
101
|
-
end
|
102
|
-
|
103
|
-
private
|
104
|
-
|
105
|
-
# Use callbacks to share common setup or constraints between actions.
|
106
|
-
def set_mautic_connection
|
107
|
-
@mautic_connection = Mautic::Connection.find(params[:id])
|
108
|
-
rescue ActiveRecord::RecordNotFound => e
|
109
|
-
return render head: 404, plain: e.message
|
110
|
-
end
|
111
|
-
|
112
|
-
# Only allow a trusted parameter "white list" through.
|
113
|
-
def mautic_connection_params
|
114
|
-
params.require(:connection).permit(:url, :client_id, :secret, :type)
|
115
|
-
end
|
116
|
-
|
117
|
-
end
|
118
|
-
end
|