bookingsync-engine 0.5.0 → 1.0.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: ea0fd3e150abdace341f9898eecebd300b547250
4
- data.tar.gz: cf2fea9ac3c75e756d57279456d7f924a586e088
3
+ metadata.gz: d2e9e1a1b065139938c74227068d00fa52244973
4
+ data.tar.gz: 29b802bfa945e74dd09ad882090303e13d19966c
5
5
  SHA512:
6
- metadata.gz: 56acfa9eeb2a5ef113cd8c5cd22b55f8c8b7aa5b6ffd17faffc0f5ec3c77aedc15a28050f4eaedf8f2cd88bcbac507d810932ccec5164f7004457761ef418dc7
7
- data.tar.gz: 2201599717c678de4a7d35609dc5d86f3730074b69275ff6cfbe8164c0082a8f28e96024b8ea73a1d14ac8ef4c2ee9ccce3d70e6fa8c353af8b6ba210ea3299c
6
+ metadata.gz: 79ec41bdd62cf2891666617393585a9e9ee008bc4e6009332c0cdd4c17e5e7043e7e203a6b7f4db60f484811e7dd97689e47d6ff40aac199d19ec85a91c25f63
7
+ data.tar.gz: 3e64fbceabffa3bb2211098586222228b424b9520c33e9ec4a3d67e3d7d00ed058c75295bf25e701383b3dd90a780e22e6acc2f70cf7170bf4c86c4147db3b64
data/README.md CHANGED
@@ -25,11 +25,17 @@ Then bundle install:
25
25
  bundle install
26
26
  ```
27
27
 
28
- Then BookingSync routes need to be mounted inside you apps routes.rb:
28
+ Then mount BookingSync Authorization routes inside `routes.rb`:
29
29
  ```ruby
30
30
  mount BookingSync::Engine => '/'
31
31
  ```
32
32
 
33
+ This will add the following routes:
34
+
35
+ * `/auth/bookingsync/callback`
36
+ * `/auth/failure`
37
+ * `/signout`
38
+
33
39
  BookingSync Engine uses the `Account` model to authenticate each BookingSync Account, if you do not have an `Account` model yet, create one:
34
40
 
35
41
  ```console
@@ -39,7 +45,7 @@ rails g model Account
39
45
  Then, generate a migration to add OAuth fields for the `Account` class:
40
46
 
41
47
  ```console
42
- rails g migration AddOAuthFieldsToAccounts provider:string uid:integer:index \
48
+ rails g migration AddOAuthFieldsToAccounts provider:string synced_id:integer:index \
43
49
  name:string oauth_access_token:string oauth_refresh_token:string \
44
50
  oauth_expires_at:string
45
51
  ```
@@ -25,13 +25,11 @@ module BookingSync
25
25
  require "bookingsync/engine/helpers"
26
26
  require "bookingsync/engine/session_helpers"
27
27
  require "bookingsync/engine/auth_helpers"
28
- require "bookingsync/engine/token_helpers"
29
28
 
30
29
  ActiveSupport.on_load :action_controller do
31
30
  include BookingSync::Engine::Helpers
32
31
  include BookingSync::Engine::SessionHelpers
33
32
  include BookingSync::Engine::AuthHelpers
34
- include BookingSync::Engine::TokenHelpers
35
33
  end
36
34
  end
37
35
 
@@ -11,16 +11,16 @@ module BookingSync::Engine::AuthHelpers
11
11
 
12
12
  # @return [Account, nil] currently authorized Account or nil if unauthorized
13
13
  def current_account
14
- @current_account ||= ::Account.find_by(uid: session[:account_id]) if session[:account_id].present?
14
+ @current_account ||= ::Account.find_by(synced_id: session[:account_id]) if session[:account_id].present?
15
15
  end
16
16
 
17
17
  # Callback after account is authorized.
18
18
  #
19
- # Stores the authorized account's uid in the session.
19
+ # Stores the authorized account's synced_id in the session.
20
20
  #
21
21
  # @param account [Account] the just authorized account
22
22
  def account_authorized(account)
23
- session[:account_id] = account.uid.to_s
23
+ session[:account_id] = account.synced_id.to_s
24
24
  end
25
25
 
26
26
  # Clear authorization if the account passed from the BookingSync app store
@@ -2,13 +2,13 @@ module BookingSync::Engine::Model
2
2
  extend ActiveSupport::Concern
3
3
 
4
4
  included do
5
- validates :uid, uniqueness: true
5
+ validates :synced_id, uniqueness: true
6
6
  scope :authorized, -> { where.not(oauth_access_token: nil) }
7
7
  end
8
8
 
9
9
  module ClassMethods
10
10
  def from_omniauth(auth)
11
- find_or_initialize_by(uid: auth.uid, provider: auth.provider).tap do |account|
11
+ find_or_initialize_by(synced_id: auth.uid, provider: auth.provider).tap do |account|
12
12
  account.name = auth.info.business_name
13
13
  account.update_token(auth.credentials)
14
14
  account.save!
@@ -1,3 +1,3 @@
1
1
  module BookingSync
2
- ENGINE_VERSION = "0.5.0"
2
+ ENGINE_VERSION = "1.0.0"
3
3
  end
@@ -2,7 +2,7 @@ class CreateAccounts < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :accounts do |t|
4
4
  t.string :provider
5
- t.integer :uid
5
+ t.integer :synced_id
6
6
  t.string :name
7
7
  t.string :oauth_access_token
8
8
  t.string :oauth_refresh_token
@@ -20,7 +20,7 @@ Dummy::Application.configure do
20
20
  # config.action_dispatch.rack_cache = true
21
21
 
22
22
  # Disable Rails's static asset server (Apache or nginx will already do this).
23
- config.serve_static_assets = false
23
+ config.serve_static_files = false
24
24
 
25
25
  # Compress JavaScripts and CSS.
26
26
  config.assets.js_compressor = :uglifier
@@ -13,7 +13,7 @@ Dummy::Application.configure do
13
13
  config.eager_load = false
14
14
 
15
15
  # Configure static asset server for tests with Cache-Control for performance.
16
- config.serve_static_assets = true
16
+ config.serve_static_files = true
17
17
  config.static_cache_control = "public, max-age=3600"
18
18
 
19
19
  # Show full error reports and disable caching.
@@ -1,8 +1,8 @@
1
1
  class AddOAuthFieldsToAccounts < ActiveRecord::Migration
2
2
  def change
3
3
  add_column :accounts, :provider, :string
4
- add_column :accounts, :uid, :integer
5
- add_index :accounts, :uid
4
+ add_column :accounts, :synced_id, :integer
5
+ add_index :accounts, :synced_id
6
6
  add_column :accounts, :name, :string
7
7
  add_column :accounts, :oauth_access_token, :string
8
8
  add_column :accounts, :oauth_refresh_token, :string
@@ -17,13 +17,13 @@ ActiveRecord::Schema.define(version: 20140522110454) do
17
17
  t.datetime "created_at"
18
18
  t.datetime "updated_at"
19
19
  t.string "provider"
20
- t.integer "uid"
20
+ t.integer "synced_id"
21
21
  t.string "name"
22
22
  t.string "oauth_access_token"
23
23
  t.string "oauth_refresh_token"
24
24
  t.string "oauth_expires_at"
25
25
  end
26
26
 
27
- add_index "accounts", ["uid"], name: "index_accounts_on_uid"
27
+ add_index "accounts", ["synced_id"], name: "index_accounts_on_synced_id"
28
28
 
29
29
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  one:
4
4
  provider: MyString
5
- uid: 1
5
+ synced_id: 1
6
6
  name: MyString
7
7
  oauth_access_token: MyString
8
8
  oauth_refresh_token: MyString
@@ -10,7 +10,7 @@ one:
10
10
 
11
11
  two:
12
12
  provider: MyString
13
- uid: 1
13
+ synced_id: 1
14
14
  name: MyString
15
15
  oauth_access_token: MyString
16
16
  oauth_refresh_token: MyString
@@ -14,16 +14,16 @@ RSpec.describe Account, type: :model do
14
14
  end
15
15
 
16
16
  describe "validations" do
17
- it { is_expected.to validate_uniqueness_of(:uid) }
17
+ it { is_expected.to validate_uniqueness_of(:synced_id) }
18
18
  end
19
19
 
20
20
  describe ".from_omniauth" do
21
- before { Account.create!(provider: "bookingsync", uid: 456) }
21
+ before { Account.create!(provider: "bookingsync", synced_id: 456) }
22
22
 
23
23
  let(:auth) { OmniAuth.config.mock_auth[:bookingsync] }
24
24
 
25
25
  context "when account exists" do
26
- let!(:account) { Account.create!(provider: "bookingsync", uid: 123) }
26
+ let!(:account) { Account.create!(provider: "bookingsync", synced_id: 123) }
27
27
 
28
28
  it "loads the existing account" do
29
29
  expect(Account.from_omniauth(auth)).to eql(account)
@@ -49,8 +49,8 @@ RSpec.describe Account, type: :model do
49
49
  describe "the newly created account" do
50
50
  let!(:account) { Account.from_omniauth(auth) }
51
51
 
52
- it "sets uid and provider from auth" do
53
- expect(account.uid).to eq 123
52
+ it "sets synced_id and provider from auth" do
53
+ expect(account.synced_id).to eq 123
54
54
  expect(account.provider).to eq "bookingsync"
55
55
  end
56
56
 
@@ -61,7 +61,7 @@ RSpec.describe Account, type: :model do
61
61
 
62
62
  describe "#token" do
63
63
  let(:expires_at) { 1.day.from_now.to_i }
64
- let!(:account) { Account.create!(uid: 123, oauth_access_token: "token",
64
+ let!(:account) { Account.create!(synced_id: 123, oauth_access_token: "token",
65
65
  oauth_refresh_token: "refresh_token", oauth_expires_at: expires_at) }
66
66
 
67
67
  context "when the stored token is fresh" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookingsync-engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastien Grosjean
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-13 00:00:00.000000000 Z
12
+ date: 2015-07-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -158,7 +158,6 @@ files:
158
158
  - lib/bookingsync/engine/helpers.rb
159
159
  - lib/bookingsync/engine/model.rb
160
160
  - lib/bookingsync/engine/session_helpers.rb
161
- - lib/bookingsync/engine/token_helpers.rb
162
161
  - lib/bookingsync/engine/version.rb
163
162
  - lib/generators/bookingsync/install/install_generator.rb
164
163
  - lib/generators/bookingsync/install/templates/create_bookingsync_accounts.rb
@@ -236,7 +235,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
235
  version: '0'
237
236
  requirements: []
238
237
  rubyforge_project:
239
- rubygems_version: 2.2.2
238
+ rubygems_version: 2.4.5
240
239
  signing_key:
241
240
  specification_version: 4
242
241
  summary: A Rails engine to simplify integration with BookingSync API
@@ -1,31 +0,0 @@
1
- module BookingSync::Engine::TokenHelpers
2
- extend ActiveSupport::Concern
3
-
4
- private
5
-
6
- # OAuth access token for the current account. Will refresh the token
7
- # if it's expired and store the new token in the database.
8
- #
9
- # @return [OAuth2::AccessToken] access token for current account
10
- def current_account_token
11
- current_account.token
12
- end
13
-
14
- # OAuth access token for the application. The token is obtained from
15
- # {BookingSync::Engine#appliation_token}.
16
- #
17
- # Will fetch new token if the current one is expired.
18
- #
19
- # The token is stored in thread local storage, to reduce the amount of
20
- # token requests.
21
- #
22
- # @return [OAuth2::AccessToken] access token for application
23
- def application_token
24
- token = Thread.current[:_bookingsync_application_token]
25
- if token.nil? || token.expired?
26
- token = Thread.current[:_bookingsync_application_token] =
27
- BookingSync::Engine.application_token
28
- end
29
- token
30
- end
31
- end