hubrise_app 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +5 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/config/hubrise_app_manifest.js +1 -0
  6. data/app/assets/stylesheets/hubrise_app/application.css +15 -0
  7. data/app/controllers/hubrise_app/application_controller.rb +70 -0
  8. data/app/controllers/hubrise_app/callback_controller.rb +26 -0
  9. data/app/controllers/hubrise_app/oauth_controller.rb +44 -0
  10. data/app/lib/hubrise_app/hubrise_gateway.rb +34 -0
  11. data/app/lib/hubrise_app/services/connect_app_instance.rb +6 -0
  12. data/app/lib/hubrise_app/services/disconnect_app_instance.rb +6 -0
  13. data/app/lib/hubrise_app/services/handle_event.rb +22 -0
  14. data/app/lib/hubrise_app/services/override/connect_app_instance.rb +1 -0
  15. data/app/lib/hubrise_app/services/override/disconnect_app_instance.rb +1 -0
  16. data/app/lib/hubrise_app/services/override/handle_event.rb +1 -0
  17. data/app/models/concerns/hubrise_app/hr_api_resource.rb +29 -0
  18. data/app/models/hubrise_app/application_record.rb +5 -0
  19. data/app/models/hubrise_app/hr_account.rb +19 -0
  20. data/app/models/hubrise_app/hr_app_instance.rb +35 -0
  21. data/app/models/hubrise_app/hr_location.rb +11 -0
  22. data/app/models/hubrise_app/hr_user.rb +35 -0
  23. data/app/models/hubrise_app/hr_user_app_instance.rb +14 -0
  24. data/app/models/hubrise_app/override/hr_user.rb +1 -0
  25. data/app/views/hubrise_app/application/root.html.haml +1 -0
  26. data/app/views/layouts/hubrise_app/application.html.erb +15 -0
  27. data/config/initializers/hubrise_app_config.rb +1 -0
  28. data/config/routes.rb +12 -0
  29. data/db/migrate/20190116155419_create_base_tables.rb +44 -0
  30. data/lib/hubrise_app/engine.rb +5 -0
  31. data/lib/hubrise_app/version.rb +3 -0
  32. data/lib/hubrise_app.rb +5 -0
  33. metadata +103 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7967fa6921a0293b0bb9ba4dc2e34573fc34721bf62732c626d4e3ed7746cd1b
4
+ data.tar.gz: 0cfcc2aea23f782afcfd4b59019d63fbc38e9a77682df8130a3fe8273087bd35
5
+ SHA512:
6
+ metadata.gz: 778100fedf85bc588497d93161813e2eabe8c18f83d565d1fa691a949e85917a37a549a3fb38a96d7a6193094dd44bdd5d6eb759edf113bd0758573a3375ddd5
7
+ data.tar.gz: 84994e316f35f455815dd0d8ad6d735b2d2a7d1b96d84ba568027820498fbf727a4d9fda81e85a165f479556827f0a8e4d61d056e7afdce61503583110a03551
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2019 nsave
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,5 @@
1
+ ## Customization
2
+ To override `oauth_controller` add `controllers/hubrise_app/override/oauth_controller.rb` to the host app
3
+
4
+ ## License
5
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ begin
2
+ require "bundler/setup"
3
+ rescue LoadError
4
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
5
+ end
6
+
7
+ require "rdoc/task"
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = "rdoc"
11
+ rdoc.title = "HubriseApp"
12
+ rdoc.options << "--line-numbers"
13
+ rdoc.rdoc_files.include("README.md")
14
+ rdoc.rdoc_files.include("lib/**/*.rb")
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
18
+ load "rails/tasks/engine.rake"
19
+
20
+ load "rails/tasks/statistics.rake"
21
+
22
+ require "bundler/gem_tasks"
23
+
24
+ require "rake/testtask"
25
+
26
+ Rake::TestTask.new(:test) do |t|
27
+ t.libs << "test"
28
+ t.pattern = "test/**/*_test.rb"
29
+ t.verbose = false
30
+ end
31
+
32
+ task default: :test
@@ -0,0 +1 @@
1
+ //= link_directory ../stylesheets/hubrise_app .css
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,70 @@
1
+ module HubriseApp
2
+ class ApplicationController < ActionController::Base
3
+ protect_from_forgery with: :reset_session
4
+ helper_method :current_hr_user, :current_hr_app_instance, :logged_in?
5
+
6
+ protected
7
+
8
+ ###########
9
+ # SESSION #
10
+ ###########
11
+
12
+ def login(hr_user)
13
+ session[:user_id] = hr_user.id
14
+ @current_hr_user = hr_user
15
+ end
16
+
17
+ def logout
18
+ session[:user_id] = nil
19
+ end
20
+
21
+ def current_hr_user
22
+ @current_hr_user ||= HrUser.where(id: session[:user_id]).take
23
+ end
24
+
25
+ def logged_in?
26
+ !!current_hr_user
27
+ end
28
+
29
+ def ensure_authenticated!
30
+ redirect_to(build_hubrise_oauth_login_url) unless logged_in?
31
+ end
32
+
33
+ ##############
34
+ # HR METHODS #
35
+ ##############
36
+
37
+ def hr_app_instance_id
38
+ params[:app_instance_id]
39
+ end
40
+
41
+ def default_url_options
42
+ super.merge(app_instance_id: hr_app_instance_id || current_hr_app_instance&.hr_id)
43
+ end
44
+
45
+ def current_hr_app_instance
46
+ @hr_app_instance ||= current_hr_user && begin
47
+ current_hr_user.hr_app_instances.where(hr_id: hr_app_instance_id).includes(:hr_account, :hr_location).take
48
+ end
49
+ end
50
+
51
+ def build_hubrise_oauth_login_url
52
+ HubriseGateway.build_login_authorization_url(
53
+ hubrise_app.hubrise_oauth_login_callback_url
54
+ )
55
+ end
56
+
57
+ def build_hubrise_oauth_authorize_url
58
+ HubriseGateway.build_app_authorization_url(hr_app_instance_id,
59
+ hubrise_app.hubrise_oauth_authorize_callback_url)
60
+ end
61
+
62
+ def ensure_hr_app_instance_found!
63
+ if hr_app_instance_id.blank?
64
+ render(plain: "Something went wrong. Please try to reopen from Hubrise Dashboard.")
65
+ elsif current_hr_app_instance.nil?
66
+ redirect_to(build_hubrise_oauth_authorize_url)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,26 @@
1
+ module HubriseApp
2
+ class CallbackController < ActionController::Base
3
+ skip_before_action :verify_authenticity_token
4
+ before_action :ensure_hr_app_instance_found!
5
+
6
+ def event
7
+ Services::HandleEvent.run(current_hr_app_instance, params.permit!.to_h)
8
+ head 200
9
+ end
10
+
11
+ def disconnect
12
+ Services::DisconnectAppInstance.run(current_hr_app_instance)
13
+ head 200
14
+ end
15
+
16
+ protected
17
+
18
+ def current_hr_app_instance
19
+ @hr_app_instance ||= HubriseApp::HrAppInstance.where(hr_id: params[:app_instance_id]).take
20
+ end
21
+
22
+ def ensure_hr_app_instance_found!
23
+ head(404) unless current_hr_app_instance
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,44 @@
1
+ module HubriseApp
2
+ class OauthController < ApplicationController
3
+ before_action :ensure_authenticated!, only: :authorize_callback
4
+
5
+ def login_callback
6
+ hr_user = HrUser.refresh_or_create_via_api_client(api_client_from_oauth_code)
7
+ login(hr_user)
8
+ redirect_to(main_app.hubrise_open_path)
9
+ end
10
+
11
+ def connect_callback
12
+ @hr_app_instance = HrAppInstance.refresh_or_create_via_api_client(api_client_from_oauth_code)
13
+
14
+ Services::ConnectAppInstance.run(current_hr_app_instance, hubrise_callback_event_url: hubrise_callback_event_url)
15
+
16
+ if logged_in?
17
+ current_hr_user.assign_hr_app_instance(current_hr_app_instance)
18
+ redirect_to(main_app.hubrise_open_path)
19
+ else
20
+ redirect_to(build_hubrise_oauth_login_url)
21
+ end
22
+ end
23
+
24
+ # authorize access to specific app_instance (expirable)
25
+ def authorize_callback
26
+ if current_hr_app_instance
27
+ current_hr_user.assign_hr_app_instance(current_hr_app_instance)
28
+ redirect_to(main_app.hubrise_open_path)
29
+ else
30
+ render(plain: "Something went wrong. Please try to reinstall the app")
31
+ end
32
+ end
33
+
34
+ protected
35
+
36
+ def current_hr_app_instance
37
+ @hr_app_instance ||= HrAppInstance.where(hr_id: api_client_from_oauth_code.app_instance_id).take
38
+ end
39
+
40
+ def api_client_from_oauth_code
41
+ @api_client_from_oauth_code ||= HubriseGateway.build_api_client_from_authorization_code(params[:code])
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,34 @@
1
+ class HubriseApp::HubriseGateway
2
+ HUBRISE_LOGIN_SCOPE = "profile_with_email".freeze
3
+ HUBRISE_API_VERSION = :v1
4
+
5
+ class << self
6
+ def build_api_client(params = {})
7
+ HubriseClient::V1.new(
8
+ HubriseApp::CONFIG[:hubrise_client_id],
9
+ HubriseApp::CONFIG[:hubrise_client_secret],
10
+ params.merge(
11
+ oauth_host: HubriseApp::CONFIG[:hubrise_oauth_host],
12
+ oauth_port: HubriseApp::CONFIG[:hubrise_oauth_port],
13
+ api_host: HubriseApp::CONFIG[:hubrise_api_host],
14
+ api_port: HubriseApp::CONFIG[:hubrise_api_port],
15
+ use_https: HubriseApp::CONFIG[:hubrise_use_https]
16
+ )
17
+ )
18
+ end
19
+
20
+ def build_api_client_from_authorization_code(authorization_code)
21
+ build_api_client.tap do |api_client|
22
+ api_client.authorize!(authorization_code)
23
+ end
24
+ end
25
+
26
+ def build_login_authorization_url(redirect_uri)
27
+ build_api_client.build_authorization_url(redirect_uri, HUBRISE_LOGIN_SCOPE)
28
+ end
29
+
30
+ def build_app_authorization_url(hr_app_instance_id, redirect_uri)
31
+ build_api_client.build_authorization_url(redirect_uri, nil, app_instance_id: hr_app_instance_id)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,6 @@
1
+ class HubriseApp::Services::ConnectAppInstance
2
+ prepend HubriseApp::Services::Override::ConnectAppInstance
3
+
4
+ class << self; delegate :run, to: :new; end
5
+ def run(hr_app_instance, hubrise_callback_event_url:); end
6
+ end
@@ -0,0 +1,6 @@
1
+ class HubriseApp::Services::DisconnectAppInstance
2
+ prepend HubriseApp::Services::Override::DisconnectAppInstance
3
+
4
+ class << self; delegate :run, to: :new; end
5
+ def run(hr_app_instance); end
6
+ end
@@ -0,0 +1,22 @@
1
+ class HubriseApp::Services::HandleEvent
2
+ prepend HubriseApp::Services::Override::HandleEvent
3
+
4
+ class << self; delegate :run, to: :new; end
5
+
6
+ def run(hr_app_instance, params)
7
+ case params["resource_type"]
8
+ when "customer"
9
+ handle_customer_event(hr_app_instance, params)
10
+ when "order"
11
+ handle_order_event(hr_app_instance, params)
12
+ else
13
+ raise "Cannot handle hubrise event with type: " + params["resource_type"].to_s
14
+ end
15
+ end
16
+
17
+ protected
18
+
19
+ def handle_customer_event(hr_app_instance, params); end
20
+
21
+ def handle_order_event(hr_app_instance, params); end
22
+ end
@@ -0,0 +1 @@
1
+ module HubriseApp::Services::Override::ConnectAppInstance; end
@@ -0,0 +1 @@
1
+ module HubriseApp::Services::Override::DisconnectAppInstance; end
@@ -0,0 +1 @@
1
+ module HubriseApp::Services::Override::HandleEvent; end
@@ -0,0 +1,29 @@
1
+ module HubriseApp::HrApiResource
2
+ REFRESH_THRESHOLD = 1.day
3
+
4
+ def stale?
5
+ refreshed_at.nil? || Time.now - refreshed_at > REFRESH_THRESHOLD
6
+ end
7
+
8
+ def refresh_via_api_client(api_client)
9
+ return unless stale?
10
+
11
+ refresh_with(self.class.fetch_hr_attrs(api_client, hr_id))
12
+ end
13
+
14
+ def refresh_with(attrs)
15
+ update!(attrs.merge(refreshed_at: Time.now))
16
+ end
17
+
18
+ def self.included(base)
19
+ base.extend(ClassMethods)
20
+ end
21
+
22
+ module ClassMethods
23
+ def refresh_or_create_via_api_client(api_client, hr_id)
24
+ hr_record = find_or_initialize_by(hr_id: hr_id)
25
+ hr_record.refresh_via_api_client(api_client)
26
+ hr_record
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ module HubriseApp
2
+ class ApplicationRecord < ActiveRecord::Base
3
+ self.abstract_class = true
4
+ end
5
+ end
@@ -0,0 +1,19 @@
1
+ class HubriseApp::HrAccount < HubriseApp::ApplicationRecord
2
+ self.table_name = :hr_accounts
3
+
4
+ include HubriseApp::HrApiResource
5
+ class << self
6
+ def fetch_hr_attrs(api_client, hr_id)
7
+ raise if api_client.account_id != hr_id
8
+
9
+ {
10
+ hr_id: hr_id,
11
+ hr_api_data: if api_client.location_id
12
+ api_client.get_location(api_client.location_id).data["account"]
13
+ else
14
+ api_client.get_account(hr_id).data
15
+ end.except("id")
16
+ }
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,35 @@
1
+ module HubriseApp
2
+ class HrAppInstance < HubriseApp::ApplicationRecord
3
+ self.table_name = :hr_app_instances
4
+
5
+ belongs_to :hr_account, optional: true, primary_key: :hr_id
6
+ belongs_to :hr_location, optional: true, primary_key: :hr_id
7
+
8
+ def api_client
9
+ HubriseApp::HubriseGateway.build_api_client(
10
+ access_token: hr_access_token,
11
+ app_instance_id: hr_id,
12
+ account_id: hr_account_id,
13
+ location_id: hr_location_id,
14
+ catalog_id: hr_catalog_id,
15
+ customer_list_id: hr_customer_list_id
16
+ )
17
+ end
18
+
19
+ def self.refresh_or_create_via_api_client(api_client)
20
+ hr_app_instance = find_or_initialize_by(hr_id: api_client.app_instance_id)
21
+ hr_account = api_client.account_id && HrAccount.refresh_or_create_via_api_client(api_client, api_client.account_id) # rubocop:disable Metrics/LineLength
22
+ hr_location = api_client.location_id && HrLocation.refresh_or_create_via_api_client(api_client, api_client.location_id) # rubocop:disable Metrics/LineLength
23
+
24
+ hr_app_instance.update!(
25
+ hr_account: hr_account,
26
+ hr_location: hr_location,
27
+ hr_access_token: api_client.access_token,
28
+ hr_catalog_id: api_client.catalog_id,
29
+ hr_customer_list_id: api_client.customer_list_id
30
+ )
31
+
32
+ hr_app_instance
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ class HubriseApp::HrLocation < HubriseApp::ApplicationRecord
2
+ self.table_name = :hr_locations
3
+
4
+ include HubriseApp::HrApiResource
5
+ def self.fetch_hr_attrs(api_client, hr_id)
6
+ {
7
+ hr_id: hr_id,
8
+ hr_api_data: api_client.get_location(hr_id).data.except("id")
9
+ }
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ module HubriseApp
2
+ class HrUser < HubriseApp::ApplicationRecord
3
+ include HubriseApp::Override::HrUser
4
+
5
+ self.table_name = :hr_users
6
+
7
+ has_many :hr_user_app_instances, -> { fresh }, primary_key: :hr_id
8
+ has_many :hr_app_instances, through: :hr_user_app_instances
9
+
10
+ include HubriseApp::HrApiResource
11
+ class << self
12
+ def fetch_hr_attrs(api_client)
13
+ data = api_client.get_user.data
14
+ {
15
+ hr_id: data.delete("id"),
16
+ hr_api_data: data,
17
+ hr_access_token: api_client.access_token
18
+ }
19
+ end
20
+
21
+ def refresh_or_create_via_api_client(api_client)
22
+ hr_attrs = fetch_hr_attrs(api_client)
23
+ hr_user = find_or_initialize_by(hr_id: hr_attrs[:hr_id])
24
+ hr_user.refresh_with(hr_attrs)
25
+ hr_user
26
+ end
27
+ end
28
+
29
+ def assign_hr_app_instance(hr_app_instance)
30
+ hr_user_app_instance = HrUserAppInstance.find_or_initialize_by(hr_app_instance_id: hr_app_instance.hr_id,
31
+ hr_user_id: hr_id)
32
+ hr_user_app_instance.refresh!
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ class HubriseApp::HrUserAppInstance < HubriseApp::ApplicationRecord
2
+ self.table_name = :hr_user_app_instances
3
+
4
+ belongs_to :hr_app_instance, primary_key: :hr_id
5
+
6
+ REFRESH_THRESHOLD = 1.day
7
+ def self.fresh(time: Time.now)
8
+ where("hr_user_app_instances.refreshed_at > ?", time - REFRESH_THRESHOLD)
9
+ end
10
+
11
+ def refresh!(time: Time.now)
12
+ update!(refreshed_at: time)
13
+ end
14
+ end
@@ -0,0 +1 @@
1
+ module HubriseApp::Override::HrUser; end
@@ -0,0 +1 @@
1
+ %h1 Hubrise app root
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Hubrise app</title>
5
+ <%= csrf_meta_tags %>
6
+ <%= csp_meta_tag %>
7
+
8
+ <%= stylesheet_link_tag "hubrise_app/application", media: "all" %>
9
+ </head>
10
+ <body>
11
+
12
+ <%= yield %>
13
+
14
+ </body>
15
+ </html>
@@ -0,0 +1 @@
1
+ HubriseApp::CONFIG = Rails.application.config_for("hubrise_app/config").deep_symbolize_keys
data/config/routes.rb ADDED
@@ -0,0 +1,12 @@
1
+ HubriseApp::Engine.routes.draw do
2
+ namespace :hubrise_oauth, controller: "/hubrise_app/oauth" do
3
+ get :connect_callback
4
+ get :login_callback
5
+ get :authorize_callback
6
+ end
7
+
8
+ namespace :hubrise_callback, controller: "/hubrise_app/callback" do
9
+ post :event
10
+ get :disconnect
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ class CreateBaseTables < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :hr_accounts do |t|
4
+ t.string :hr_id, null: false, index: { unique: true }
5
+ t.json :hr_api_data, null: false
6
+ t.datetime :refreshed_at, null: false
7
+ end
8
+
9
+ create_table :hr_locations do |t|
10
+ t.string :hr_id, null: false, index: { unique: true }
11
+ t.json :hr_api_data, null: false
12
+ t.datetime :refreshed_at, null: false
13
+ end
14
+
15
+ create_table :hr_app_instances do |t|
16
+ t.string :hr_id, null: false, index: { unique: true }
17
+ t.string :hr_account_id, index: true
18
+ t.string :hr_location_id, index: true
19
+ t.string :hr_catalog_id
20
+ t.string :hr_customer_list_id
21
+ t.string :hr_access_token, null: false
22
+ end
23
+
24
+ add_foreign_key :hr_app_instances, :hr_accounts, primary_key: :hr_id
25
+ add_foreign_key :hr_app_instances, :hr_locations, primary_key: :hr_id
26
+
27
+ create_table :hr_users do |t|
28
+ t.string :hr_id, null: false, index: { unique: true }
29
+ t.json :hr_api_data, null: false
30
+ t.string :hr_access_token, null: false
31
+ t.datetime :refreshed_at, null: false
32
+ end
33
+
34
+ create_table :hr_user_app_instances do |t|
35
+ t.string :hr_user_id, index: true
36
+ t.string :hr_app_instance_id, index: true
37
+ t.datetime :refreshed_at, null: false
38
+ end
39
+
40
+ add_foreign_key :hr_user_app_instances, :hr_users, primary_key: :hr_id
41
+ add_foreign_key :hr_user_app_instances, :hr_app_instances, primary_key: :hr_id
42
+ add_index :hr_user_app_instances, %i[hr_user_id hr_app_instance_id refreshed_at], name: :index_user_app_instances, using: :btree
43
+ end
44
+ end
@@ -0,0 +1,5 @@
1
+ module HubriseApp
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace HubriseApp
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module HubriseApp
2
+ VERSION = "0.1.2".freeze
3
+ end
@@ -0,0 +1,5 @@
1
+ require "hubrise_app/engine"
2
+ require "hubrise_client"
3
+
4
+ module HubriseApp
5
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hubrise_app
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - Antoine Monnier
8
+ - Nick Save
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2019-05-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: hubrise_client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 2.0.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 2.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: rails
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: 5.2.2
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 5.2.2
42
+ description:
43
+ email:
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - MIT-LICENSE
49
+ - README.md
50
+ - Rakefile
51
+ - app/assets/config/hubrise_app_manifest.js
52
+ - app/assets/stylesheets/hubrise_app/application.css
53
+ - app/controllers/hubrise_app/application_controller.rb
54
+ - app/controllers/hubrise_app/callback_controller.rb
55
+ - app/controllers/hubrise_app/oauth_controller.rb
56
+ - app/lib/hubrise_app/hubrise_gateway.rb
57
+ - app/lib/hubrise_app/services/connect_app_instance.rb
58
+ - app/lib/hubrise_app/services/disconnect_app_instance.rb
59
+ - app/lib/hubrise_app/services/handle_event.rb
60
+ - app/lib/hubrise_app/services/override/connect_app_instance.rb
61
+ - app/lib/hubrise_app/services/override/disconnect_app_instance.rb
62
+ - app/lib/hubrise_app/services/override/handle_event.rb
63
+ - app/models/concerns/hubrise_app/hr_api_resource.rb
64
+ - app/models/hubrise_app/application_record.rb
65
+ - app/models/hubrise_app/hr_account.rb
66
+ - app/models/hubrise_app/hr_app_instance.rb
67
+ - app/models/hubrise_app/hr_location.rb
68
+ - app/models/hubrise_app/hr_user.rb
69
+ - app/models/hubrise_app/hr_user_app_instance.rb
70
+ - app/models/hubrise_app/override/hr_user.rb
71
+ - app/views/hubrise_app/application/root.html.haml
72
+ - app/views/layouts/hubrise_app/application.html.erb
73
+ - config/initializers/hubrise_app_config.rb
74
+ - config/routes.rb
75
+ - db/migrate/20190116155419_create_base_tables.rb
76
+ - lib/hubrise_app.rb
77
+ - lib/hubrise_app/engine.rb
78
+ - lib/hubrise_app/version.rb
79
+ homepage: https://github.com/HubRise/ruby-app
80
+ licenses:
81
+ - MIT
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.7.6
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: Rails engine to bootstrap a HubRise-based application
103
+ test_files: []