intercom-app 0.1.1 → 0.2.0

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
  SHA1:
3
- metadata.gz: b1efe773248ef9439365870c93fc8eeb6157004f
4
- data.tar.gz: e3ded3e1132f4cbca3bf40c086f78fea84ccce7a
3
+ metadata.gz: cc04ec408e8cc21f7622eedb75808106f46a039e
4
+ data.tar.gz: ee6cb8896446949c3e2fe55bd386550296f0d657
5
5
  SHA512:
6
- metadata.gz: 61d69c7a3937c84d1f1647865eb1534e60eba03a64aedc40a6e678a4cafac329c582e2871f6acbc0fee0b129fd3271e2c6cbb73e220ba3d2b22d745c343e85d1
7
- data.tar.gz: d46307ce2dfa7d65080bf5d900a2a1ca95faed0826d1f7e947fa5514655937ad884bedf91d9a90db23d2a5cb3c12ed8355f26358af669c078bd7e473d4695d73
6
+ metadata.gz: b1749b716486ddc6bf4b75cd7ea400872823da73eecd422d02538172c25111273e9efafb7d33db439e45bf062d98b736f880ff2f5eda01fdcb9360a4b95d4e06
7
+ data.tar.gz: 7b2b3bc6fb9af331a6f229c290608c4911bc7e33a55753c5734df473bde6249914d20bf1ae9876b7138f4fd673765d39828df3ebd508da397f06bed250d2a29c
data/CHANGELOG.md ADDED
@@ -0,0 +1,21 @@
1
+ ## 0.1.0 (2016-07-08)
2
+
3
+ Features:
4
+
5
+ * Rails generator
6
+ * Intercom app sessions
7
+ * IntercomApp::App model
8
+ * Intercom Omniauth
9
+ * intercom_app initializer (@Skaelv)
10
+
11
+ ## 0.1.1 (2016-07-08)
12
+
13
+ * Add lib files to gemspec (@Skaelv)
14
+
15
+ ## 0.2.0 (2016-08-16)
16
+
17
+ * Fix test app crashes
18
+ * Fix webhooks subscription
19
+ * Webhooks verification
20
+ * Move LoginProtection to AuthenticatedController
21
+ * Create jobs for webhooks (@Skaelv)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- intercom-app (0.1.0)
4
+ intercom-app (0.2.0)
5
5
  intercom (~> 3.5)
6
6
  omniauth-intercom (~> 0.1)
7
7
 
@@ -54,7 +54,7 @@ GEM
54
54
  activesupport (>= 4.1.0)
55
55
  hashie (3.4.4)
56
56
  i18n (0.7.0)
57
- intercom (3.5.1)
57
+ intercom (3.5.2)
58
58
  json (~> 1.8)
59
59
  json (1.8.3)
60
60
  jwt (1.5.4)
@@ -85,7 +85,7 @@ GEM
85
85
  omniauth (1.3.1)
86
86
  hashie (>= 1.2, < 4)
87
87
  rack (>= 1.0, < 3)
88
- omniauth-intercom (0.1.2)
88
+ omniauth-intercom (0.1.3)
89
89
  omniauth-oauth2 (~> 1.2)
90
90
  omniauth-oauth2 (1.4.0)
91
91
  oauth2 (~> 1.0)
@@ -137,12 +137,12 @@ PLATFORMS
137
137
 
138
138
  DEPENDENCIES
139
139
  bundler (~> 1.12)
140
- byebug
140
+ byebug (~> 9.0)
141
141
  intercom-app!
142
- mocha
143
- rails (~> 4.2.6)
142
+ mocha (~> 1.1)
143
+ rails (~> 4.2)
144
144
  rake (~> 10.0)
145
- sqlite3
145
+ sqlite3 (~> 1.3)
146
146
 
147
147
  BUNDLED WITH
148
148
  1.12.5
data/README.md CHANGED
@@ -3,6 +3,8 @@ Intercom App
3
3
 
4
4
  Intercom Application Rails engine and generator
5
5
 
6
+ *Note this SDK is in beta version and still needs a lot of improvements. We advise you to use it only if you feel you can help contributing and fix issues when you find them*
7
+
6
8
  Description
7
9
  -----------
8
10
  This gem includes a Rails Engine and generators for writing Rails applications using the Intercom API. The Engine provides a SessionsController and all the required code for authenticating with an app via Oauth.
@@ -46,6 +48,8 @@ $ rails generate intercom_app --app_key <your_app_key> --app_secret <your_app_se
46
48
  - If false you can authenticate with Intercom directly from the current tab
47
49
 
48
50
 
51
+ *Note that you will need to run rake db:migrate after this generator*
52
+
49
53
  ### Install Generator
50
54
 
51
55
  ```sh
@@ -96,11 +100,29 @@ The `install` generator places your App credentials directly into the intercom_a
96
100
  ```ruby
97
101
  IntercomApp.configure do |config|
98
102
  config.api_key = ENV['INTERCOM_CLIENT_APP_KEY']
99
- config.secret = ENV['INTERCOM_CLIENT_APP_SECRET']
103
+ config.app_secret = ENV['INTERCOM_CLIENT_APP_SECRET']
100
104
  config.oauth_modal = false
101
105
  end
102
106
  ```
103
107
 
108
+ Webhooks Subscriptions
109
+ ----------------------
110
+
111
+ You can add your webhooks subscriptions to the `IntercomApp.config`. Subscriptions to your topics will be added on authentication callback.
112
+
113
+ ```ruby
114
+ IntercomApp.configure do |config|
115
+ config.webhooks = [
116
+ {topics: ['users'], url: 'https://my-intercom-app.com/webhooks/users'},
117
+ {topics: ['conversation.user.created', 'conversation.user.replied'], url: 'https://my-intercom-app.com/webhooks/conversations'},
118
+ {topics: ['event.created'], url: 'https://my-intercom-app.com/webhooks/conversations', metadata: { event_names: events } }
119
+ ]
120
+ end
121
+ ```
122
+
123
+ **Important** You will need to request the `manage_webhooks` permissions from Intercom to receive webhooks from Intercom.
124
+
125
+
104
126
  Connect to the Intercom API
105
127
  ----------------------
106
128
  This gem includes the following libraries :
data/RELEASING CHANGED
@@ -9,6 +9,6 @@ To release a new version of the intercom-ruby-app gem :
9
9
  6. Push the new tag :
10
10
  $ git push --tags
11
11
  7. Build the new gem :
12
- $ gem build intercom-ruby-app.gemspec
12
+ $ gem build intercom-app.gemspec
13
13
  8. Push the new gem :
14
- $ gem push intercom-ruby-app-X.Y.Z.gem
14
+ $ gem push intercom-app-X.Y.Z.gem
@@ -1,6 +1,7 @@
1
1
  module IntercomApp
2
2
  class AuthenticatedController < ApplicationController
3
- # before_action :login_again_if_different_app
3
+ include IntercomApp::LoginProtection
4
+
4
5
  around_action :intercom_session
5
6
  layout 'application'
6
7
  end
@@ -0,0 +1,33 @@
1
+ module IntercomApp
2
+ class WebhooksController < ApplicationController
3
+ skip_before_action :verify_authenticity_token
4
+
5
+ include IntercomApp::WebhookVerification
6
+
7
+ class IntercomApp::MissingWebhookJobDeclarationError < StandardError; end
8
+
9
+ def receive
10
+ webhook_job_klass.perform_later({app_id: app_id, webhook: webhook_params.to_h})
11
+ head :no_content
12
+ end
13
+
14
+ private
15
+
16
+ def webhook_params
17
+ params.except(:controller, :action, :type)
18
+ end
19
+
20
+ def webhook_job_klass
21
+ "#{webhook_type.sub('.','_').classify}Job".safe_constantize or raise IntercomApp::MissingWebhookJobDeclarationError
22
+ end
23
+
24
+ def webhook_type
25
+ params[:type]
26
+ end
27
+
28
+ def app_id
29
+ params[:app_id]
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,23 @@
1
+ <% if IntercomApp.configuration.oauth_modal %>
2
+ <a href="javascript:void(0)" class="intercom-oauth-cta">
3
+ <img src="https://static.intercomassets.com/assets/oauth/primary-7edb2ebce84c088063f4b86049747c3a.png" srcset="https://static.intercomassets.com/assets/oauth/primary-7edb2ebce84c088063f4b86049747c3a.png 1x, https://static.intercomassets.com/assets/oauth/primary@2x-0d69ca2141dfdfa0535634610be80994.png 2x, https://static.intercomassets.com/assets/oauth/primary@3x-788ed3c44d63a6aec3927285e920f542.png 3x"/>
4
+ </a>
5
+ <script type="text/javascript">
6
+ $('.intercom-oauth-cta').unbind('click').click(function() {
7
+ var left = (screen.width/2)-(700/2);
8
+ var top = (screen.height/2)-(450/2);
9
+ var opts = 'width=700, height=450, top='+top+', left='+left
10
+ var auth_window = window.open('/auth/intercom', 'Sign in', opts);
11
+ var checkWindow = function() {
12
+ if (auth_window.closed) {
13
+ window.location = '/';
14
+ } else if (window.oauth_success === undefined) {
15
+ setTimeout(checkWindow, 200);
16
+ }
17
+ };
18
+ checkWindow();
19
+ });
20
+ </script>
21
+ <% else %>
22
+ <a href="/auth/intercom">Login</a>
23
+ <% end %>
data/config/routes.rb CHANGED
@@ -4,4 +4,8 @@ IntercomApp::Engine.routes.draw do
4
4
  get 'auth/intercom/callback' => :callback
5
5
  get 'logout' => :destroy, :as => :logout
6
6
  end
7
+
8
+ namespace :webhooks do
9
+ post ':type' => :receive
10
+ end
7
11
  end
data/intercom-app.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = IntercomApp::VERSION
8
8
  s.date = '2016-07-04'
9
9
  s.summary = "Intercom.io ruby application boilerplate"
10
- s.description = "This gem helps you to get started with your Intercom.io app"
10
+ s.description = "This gem helps you to get started with your Intercom app"
11
11
  s.authors = ["Kevin Antoine"]
12
12
  s.email = 'kevin.antoine@intercom.io'
13
13
  s.files = ["lib/intercom-app.rb"]
@@ -17,13 +17,15 @@ Gem::Specification.new do |s|
17
17
  s.require_paths = ["lib"]
18
18
  s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
19
 
20
- s.add_runtime_dependency 'intercom', '~>3.5'
20
+ s.required_ruby_version = '>= 2.2.2'
21
+
22
+ s.add_runtime_dependency 'intercom', '~> 3.5'
21
23
  s.add_runtime_dependency 'omniauth-intercom', '~>0.1'
22
24
 
23
25
  s.add_development_dependency 'rails', '~> 4.2'
24
- s.add_development_dependency 'sqlite3', '~> 0'
25
- s.add_development_dependency 'mocha', '~> 0'
26
- s.add_development_dependency 'byebug', '~> 0'
26
+ s.add_development_dependency 'sqlite3', '~> 1.3'
27
+ s.add_development_dependency 'mocha', '~> 1.1'
28
+ s.add_development_dependency 'byebug', '~> 9.0'
27
29
  s.add_development_dependency 'bundler', '~> 1.12'
28
30
  s.add_development_dependency 'rake', '~> 10.0'
29
31
  end
@@ -34,7 +34,8 @@ module IntercomApp
34
34
 
35
35
  # for generating a timestamp when using `create_migration`
36
36
  def self.next_migration_number(dir)
37
- ActiveRecord::Generators::Base.next_migration_number(dir)
37
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
38
+ # ActiveRecord::Migration.next_migration_number(dir)
38
39
  end
39
40
  end
40
41
  end
@@ -1,6 +1,6 @@
1
- class HomeController < ApplicationController
1
+ class HomeController < IntercomApp::AuthenticatedController
2
+
2
3
  def index
3
- @users_count = @intercom_client.users.all.count()
4
- @users_names = @intercom_client.users.all.map(&:name)
4
+ @users_names = @intercom_client.users.find_all(:type=>'users', :per_page => 10, :page => 1, :order => "desc", :sort => "created_at").map(&:name)
5
5
  end
6
6
  end
@@ -1,26 +1,6 @@
1
- <% if IntercomApp.configuration.oauth_modal %>
2
- <a href="javascript:void(0)" class="intercom-oauth-cta">
3
- <img src="https://static.intercomassets.com/assets/oauth/primary-7edb2ebce84c088063f4b86049747c3a.png" srcset="https://static.intercomassets.com/assets/oauth/primary-7edb2ebce84c088063f4b86049747c3a.png 1x, https://static.intercomassets.com/assets/oauth/primary@2x-0d69ca2141dfdfa0535634610be80994.png 2x, https://static.intercomassets.com/assets/oauth/primary@3x-788ed3c44d63a6aec3927285e920f542.png 3x"/>
4
- </a>
5
- <script type="text/javascript">
6
- $('.intercom-oauth-cta').unbind('click').click(function() {
7
- var auth_window = window.open('/auth/intercom', 'Sign in', 'width=700,height=450');
8
- var checkWindow = function() {
9
- if (auth_window.closed) {
10
- window.location = '/';
11
- } else if (window.oauth_success === undefined) {
12
- setTimeout(checkWindow, 200);
13
- }
14
- };
15
- checkWindow();
16
- });
17
- </script>
18
- <% else %>
19
- <a href="/auth/intercom">Login</a>
20
- <% end %>
21
-
1
+ <a href="/login">Login</a>
22
2
  <h1>Intercom application</h1>
23
- <h2>List your <%= @users_count %> Intercom Users names :</h2>
3
+ <h2>Users list:</h2>
24
4
  <ul>
25
5
  <% @users_names.each do | name | %>
26
6
  <li> <%= name %></li>
@@ -1,20 +1,25 @@
1
1
  require 'rails/generators/base'
2
2
  require 'rails/generators/active_record'
3
+ require 'intercom-app/hub_secret_generator'
4
+
3
5
 
4
6
  module IntercomApp
5
7
  module Generators
6
8
  class InstallGenerator < Rails::Generators::Base
7
9
  include Rails::Generators::Migration
10
+ include IntercomApp::Utils
8
11
  source_root File.expand_path('../templates', __FILE__)
9
12
 
10
13
  class_option :app_key, type: :string, default: '<app_key>'
11
14
  class_option :app_secret, type: :string, default: '<app_secret>'
12
15
  class_option :oauth_modal, type: :boolean, default: false
16
+ class_option :hub_secret, type: :string
13
17
 
14
18
  def create_intercom_app_initializer
15
19
  @app_key = options['app_key']
16
20
  @app_secret = options['app_secret']
17
21
  @oauth_modal = options['oauth_modal']
22
+ @hub_secret = generate_hub_secret
18
23
 
19
24
  template 'intercom_app.rb', 'config/initializers/intercom_app.rb'
20
25
  end
@@ -35,19 +40,20 @@ module IntercomApp
35
40
  copy_file 'intercom_session_repository.rb', 'config/initializers/intercom_session_repository.rb'
36
41
  end
37
42
 
38
-
39
- def inject_into_application_controller
40
- inject_into_class(
41
- "app/controllers/application_controller.rb",
42
- 'ApplicationController',
43
- " include IntercomApp::LoginProtection\n"
44
- )
45
- end
46
-
47
43
  def mount_engine
48
44
  route "mount IntercomApp::Engine, at: '/'"
49
45
  end
50
46
 
47
+ private
48
+
49
+ def generate_hub_secret
50
+ if yes?("In order to increase the safety of your app, would you like your webhooks to be automatically signed?(y/n)")
51
+ return random_hub_secret
52
+ else
53
+ return ''
54
+ end
55
+ end
56
+
51
57
  end
52
58
  end
53
59
  end
@@ -1,5 +1,6 @@
1
1
  IntercomApp.configure do |config|
2
2
  config.app_key = "<%= @app_key %>"
3
3
  config.app_secret = "<%= @app_secret %>"
4
+ config.hub_secret = "<%= @hub_secret %>"
4
5
  config.oauth_modal = <%= @oauth_modal %>
5
6
  end
data/lib/intercom-app.rb CHANGED
@@ -2,11 +2,14 @@ require 'intercom-app/version'
2
2
  require 'intercom-app/app'
3
3
  require 'intercom-app/configuration'
4
4
  require 'intercom-app/engine'
5
+ require 'intercom-app/hub_secret_generator'
5
6
  require 'intercom-app/in_memory_session_store'
6
7
  require 'intercom-app/login_protection'
7
8
  require 'intercom-app/session_repository'
8
9
  require 'intercom-app/session_storage'
9
10
  require 'intercom-app/sessions_concern'
11
+ require 'intercom-app/webhook_verification'
12
+ require 'intercom-app/webhooks_manager'
10
13
 
11
14
  # deps
12
15
  require 'intercom'
@@ -4,6 +4,8 @@ module IntercomApp
4
4
  attr_accessor :app_key
5
5
  attr_accessor :app_secret
6
6
  attr_accessor :oauth_modal
7
+ attr_accessor :webhooks
8
+ attr_accessor :hub_secret
7
9
 
8
10
  def initialize
9
11
  end
@@ -0,0 +1,14 @@
1
+ require 'digest/sha1'
2
+
3
+ module IntercomApp
4
+ module Utils
5
+
6
+ def random_string
7
+ (0...20).map { (65 + rand(26)).chr }.join
8
+ end
9
+
10
+ def random_hub_secret
11
+ Digest::SHA1.hexdigest random_string
12
+ end
13
+ end
14
+ end
@@ -9,7 +9,7 @@ module IntercomApp
9
9
  def intercom_session
10
10
  if app_session
11
11
  begin
12
- @intercom_client = Intercom::Client.new(app_id: app_session[:token], api_key: '')
12
+ @intercom_client = Intercom::Client.new(token: app_session[:token])
13
13
  yield
14
14
  end
15
15
  else
@@ -2,8 +2,8 @@ module IntercomApp
2
2
  module SessionsConcern
3
3
  extend ActiveSupport::Concern
4
4
 
5
- def login
6
- redirect_to login_url
5
+ included do
6
+ include IntercomApp::LoginProtection
7
7
  end
8
8
 
9
9
  def callback
@@ -14,6 +14,7 @@ module IntercomApp
14
14
  }
15
15
  session[:intercom] = IntercomApp::SessionRepository.store(app)
16
16
  session[:intercom_app_id] = app[:intercom_app_id]
17
+ IntercomApp::WebhooksManager.new(intercom_token: app[:token]).create_webhooks if IntercomApp.configuration.webhooks.present?
17
18
  redirect_to return_address unless IntercomApp.configuration.oauth_modal
18
19
  else
19
20
  redirect_to login_url
@@ -1,3 +1,3 @@
1
1
  module IntercomApp
2
- VERSION = '0.1.1'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -0,0 +1,26 @@
1
+ module IntercomApp
2
+ module WebhookVerification
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ before_action :verify_request
7
+ end
8
+
9
+ private
10
+ def verify_request
11
+ body = request.body.read
12
+ return head :unauthorized unless hmac_valid?(body)
13
+ end
14
+
15
+ def hmac_valid?(payload_body)
16
+ secret = IntercomApp.configuration.hub_secret
17
+ signature = 'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), secret, payload_body)
18
+ Rack::Utils.secure_compare(signature, intercom_hmac)
19
+ end
20
+
21
+ def intercom_hmac
22
+ request.headers['X-Hub-Signature']
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,60 @@
1
+ module IntercomApp
2
+ class WebhooksManager
3
+ class CreationFailed < StandardError; end
4
+ def initialize(params)
5
+ @intercom_token = params[:intercom_token]
6
+ end
7
+
8
+ def create_webhooks_subscriptions
9
+ return unless required_webhooks.present?
10
+ required_webhooks.each do |webhook|
11
+ create_webhook_subscription(webhook) unless webhook_subscription_exists?(webhook[:topics])
12
+ end
13
+ end
14
+
15
+ def destroy_webhooks_subscriptions
16
+ intercom_client.subscriptions.all.each do |webhook|
17
+ intercom_client.subscriptions.delete(webhook.id) if is_required_webhook?(webhook)
18
+ end
19
+
20
+ @current_webhooks_subscriptions = nil
21
+ end
22
+
23
+ def recreate_webhooks_subscriptions!
24
+ destroy_webhooks_subscriptions
25
+ create_webhooks_subscriptions
26
+ end
27
+
28
+ private
29
+
30
+ def intercom_client
31
+ @intercom_client ||= Intercom::Client.new(app_id: @intercom_token, api_key: '')
32
+ end
33
+
34
+ def required_webhooks
35
+ IntercomApp.configuration.webhooks
36
+ end
37
+
38
+ def is_required_webhook?(webhook)
39
+ required_webhooks.map{ |w| w[:url] }.include? webhook.url
40
+ end
41
+
42
+ def create_webhook_subscription(attributes)
43
+ add_hub_secret_to_subscription(attributes)
44
+ webhook = intercom_client.subscriptions.create(attributes)
45
+ end
46
+
47
+ def webhook_subscription_exists?(topics)
48
+ current_webhooks_subscriptions[topics]
49
+ end
50
+
51
+ def current_webhooks_subscriptions
52
+ @current_webhooks_subscriptions ||= intercom_client.subscriptions.all.index_by(&:topics)
53
+ end
54
+
55
+ def add_hub_secret_to_subscription(attributes)
56
+ attributes[:hub_secret] = IntercomApp.configuration.hub_secret if IntercomApp.configuration.hub_secret.present?
57
+ end
58
+
59
+ end
60
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Antoine
@@ -58,42 +58,42 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '1.3'
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: '0'
68
+ version: '1.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: '1.1'
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: '0'
82
+ version: '1.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '9.0'
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: '0'
96
+ version: '9.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +122,7 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '10.0'
125
- description: This gem helps you to get started with your Intercom.io app
125
+ description: This gem helps you to get started with your Intercom app
126
126
  email: kevin.antoine@intercom.io
127
127
  executables: []
128
128
  extensions: []
@@ -132,7 +132,7 @@ files:
132
132
  - ".gitignore"
133
133
  - ".rspec"
134
134
  - ".travis.yml"
135
- - CHANGELOG
135
+ - CHANGELOG.md
136
136
  - Gemfile
137
137
  - Gemfile.lock
138
138
  - LICENSE
@@ -141,8 +141,10 @@ files:
141
141
  - Rakefile
142
142
  - app/controllers/intercom_app/authenticated_controller.rb
143
143
  - app/controllers/intercom_app/sessions_controller.rb
144
+ - app/controllers/intercom_app/webhooks_controller.rb
144
145
  - app/models/intercom-app/app.rb
145
146
  - app/views/intercom_app/sessions/callback.html.erb
147
+ - app/views/intercom_app/sessions/login.html.erb
146
148
  - config/routes.rb
147
149
  - intercom-app.gemspec
148
150
  - lib/generators/intercom_app/app_model/app_model_generator.rb
@@ -164,12 +166,15 @@ files:
164
166
  - lib/intercom-app/app.rb
165
167
  - lib/intercom-app/configuration.rb
166
168
  - lib/intercom-app/engine.rb
169
+ - lib/intercom-app/hub_secret_generator.rb
167
170
  - lib/intercom-app/in_memory_session_store.rb
168
171
  - lib/intercom-app/login_protection.rb
169
172
  - lib/intercom-app/session_repository.rb
170
173
  - lib/intercom-app/session_storage.rb
171
174
  - lib/intercom-app/sessions_concern.rb
172
175
  - lib/intercom-app/version.rb
176
+ - lib/intercom-app/webhook_verification.rb
177
+ - lib/intercom-app/webhooks_manager.rb
173
178
  homepage: http://rubygems.org/gems/intercom-ruby-app
174
179
  licenses:
175
180
  - MIT
@@ -182,7 +187,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
187
  requirements:
183
188
  - - ">="
184
189
  - !ruby/object:Gem::Version
185
- version: '0'
190
+ version: 2.2.2
186
191
  required_rubygems_version: !ruby/object:Gem::Requirement
187
192
  requirements:
188
193
  - - ">="
@@ -190,8 +195,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
195
  version: '0'
191
196
  requirements: []
192
197
  rubyforge_project:
193
- rubygems_version: 2.4.8
198
+ rubygems_version: 2.5.1
194
199
  signing_key:
195
200
  specification_version: 4
196
201
  summary: Intercom.io ruby application boilerplate
197
202
  test_files: []
203
+ has_rdoc:
data/CHANGELOG DELETED
@@ -1,7 +0,0 @@
1
- 0.1.0
2
- -----
3
- * Rails generator
4
- * Intercom app sessions
5
- * IntercomApp::App model
6
- * Intercom Omniauth
7
- * intercom_app initializer