bookingsync_application 0.1.7 → 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: e1e112d94e2bec3a680aad272fe223b5da489e71
4
- data.tar.gz: 115dd3b8febb903ed32f87472d3308c34f9a3e0f
3
+ metadata.gz: 61e8a69312085fb8b68d4533325f0656fa769d5e
4
+ data.tar.gz: d10d3a9f892a954f4ea0e6fe7ab25dd1ba184896
5
5
  SHA512:
6
- metadata.gz: 9b668eafcca3111a41de89cab1bcbdb9e8c2f1a49e2bb5a49de7fe56b451c57b8e2077e157095a8fae8e1100f62aed495685f5f13587cd7b05851eace23f61ba
7
- data.tar.gz: a0f2aa73c1386c2e3a7ecba2d365b89ec62dac0bc0ecb94c3cb6ff1c621d4fec5d4151681b9f3d9aedb354c8dc1930f72cb14c8ec0e0b9d8a97ba81b2de76349
6
+ metadata.gz: cd3797798f43a4b9183602412ce75e13e3772d4b9ff97416cb4103f5be73850415d837d180ca36e7ebb11803aac3fa9f1cc383e9a63cd44c141b78caf075ca42
7
+ data.tar.gz: 62c31222f9e7c1fd6cf37152b73d56d31e979649214be57d50f31c24e6add0aa12de4fb911d9a8405b43b79ea085499b5fb4f69bccbac75acb00f96c52629725
data/README.md CHANGED
@@ -1,26 +1,88 @@
1
1
  [![Code Climate](https://codeclimate.com/github/BookingSync/bookingsync_application/badges/gpa.svg)](https://codeclimate.com/github/BookingSync/bookingsync_application)
2
- [![Build Status](https://travis-ci.org/BookingSync/bookingsync_application.svg?branch=master)](https://travis-ci.org/BookingSync/bookingsync-engine)
2
+ [![Build Status](https://travis-ci.org/BookingSync/bookingsync_application.svg?branch=master)](https://travis-ci.org/BookingSync/bookingsync_application)
3
3
 
4
4
  # BookingsyncApplication
5
5
 
6
6
  A Rails engine to simplify building BookingSync Applications.
7
7
 
8
- # Usage
8
+ ## Requirements
9
9
 
10
- * add bookingsync_application to your gemfile
11
- ```
10
+ This engine requires Rails `>= 4.0.0` and Ruby `>= 2.0.0`.
11
+
12
+ ## Documentation
13
+
14
+ [API documentation is available at rdoc.info](http://rdoc.info/github/BookingSync/bookingsync_application/master/frames).
15
+
16
+ ## Installation
17
+
18
+ BookingSync Application works with Rails 4.0 onwards and Ruby 2.0 onwards. To get started, add it to your Gemfile with:
19
+
20
+ ```ruby
12
21
  gem 'bookingsync_application'
13
22
  ```
14
- * add to rails_helper (before spec/support inclusion):
23
+
24
+ Then bundle install:
25
+
26
+ ```ruby
27
+ bundle install
15
28
  ```
16
- require 'bookingsync_application/spec_helper'
29
+
30
+ ### Add authorization routes
31
+
32
+ Then BookingSync Authorization routes need to be mounted inside you apps routes.rb:
33
+ ```ruby
34
+ mount BookingSync::Engine => '/'
35
+ ```
36
+
37
+ This will add the following routes:
38
+
39
+ * `/auth/bookingsync/callback`
40
+ * `/auth/failure`
41
+ * `/signout`
42
+
43
+ ### Add a model to link with BookingSync accounts
44
+
45
+ BookingSync Application uses the `Account` model to authenticate each BookingSync Account, if you do not have an `Account` model yet, create one:
46
+
47
+ ```console
48
+ rails g model Account
49
+ ```
50
+
51
+ Then, generate a migration to add OAuth fields for the `Account` class:
52
+
53
+ ```console
54
+ rails g migration AddOAuthFieldsToAccounts provider:string uid:integer:index \
55
+ name:string oauth_access_token:string oauth_refresh_token:string \
56
+ oauth_expires_at:string
57
+ ```
58
+
59
+ and migrate:
60
+
61
+ ```console
62
+ rake db:migrate
63
+ ```
64
+
65
+ Also include `BookingSync::Engine::Account` in your `Account` model:
66
+
67
+ ```ruby
68
+ class Account < ActiveRecord::Base
69
+ include BookingSync::Engine::Model
70
+ end
17
71
  ```
18
- * create base admin controller (it will be json based):
72
+
73
+ ### Secure controllers to require a BookingSync authorized account
74
+
75
+ We now want to provide secured controllers, this controllers will be accessible only to BookingSync identified accounts.
76
+
77
+ You have 2 options pre built for this:
78
+
79
+ 1) Create base admin controller (it will be `json` based):
19
80
  ```
20
81
  class Admin::BaseController < BookingsyncApplication::Admin::BaseController
21
82
  end
22
83
  ```
23
- * optionally if you want to have html based controller:
84
+
85
+ 2) Optionally if you want to have `html` based controller:
24
86
  ```
25
87
  class Admin::BaseHTMLController < ApplicationController
26
88
  respond_to :html
@@ -28,4 +90,47 @@ class Admin::BaseHTMLController < ApplicationController
28
90
  include BookingsyncApplication::CommonBaseController
29
91
  end
30
92
  ```
31
- * BookingsyncEngine is a dependency here. Follow steps in https://github.com/BookingSync/bookingsync-engine
93
+
94
+
95
+ _Note: When saving new token, this gem uses a separate thread with new db connection to ensure token save (in case of a rollback in the main transaction). To make room for the new connections, it is recommended to increase db `pool` size by 2-3._
96
+
97
+ ## Configuration
98
+
99
+ The engine is configured by the following ENV variables:
100
+
101
+ * `BOOKINGSYNC_URL` - the url of the website, should be
102
+ * `BOOKINGSYNC_APP_ID` - BookingSync Application's Client ID
103
+ * `BOOKINGSYNC_APP_SECRET` - BookingSync Application's Client Secret
104
+ * `BOOKINGSYNC_VERIFY_SSL` - Verify SSL (available only in development or test). Default to false
105
+ * `BOOKINGSYNC_SCOPE` - Space separated list of required scopes. Defaults to nil, which means the public scope.
106
+
107
+ You might want to use [dotenv-rails](https://github.com/bkeepers/dotenv)
108
+ to make ENV variables management easy.
109
+
110
+ ## Testing
111
+
112
+ ### RSpec
113
+
114
+ We do provide some helper for RSpec users, you can include them in your `spec/rails_helper.rb` (before `spec/support` inclusion):
115
+ ```
116
+ require 'bookingsync_application/spec_helper'
117
+ ```
118
+
119
+ ### VCR
120
+
121
+ We recommend a VCR setup inspired from the following configuration. It will mask authorization tokens from your fixtures:
122
+
123
+ ```ruby
124
+ require 'vcr'
125
+
126
+ VCR.configure do |config|
127
+ config.cassette_library_dir = 'spec/fixtures/cassettes'
128
+ config.hook_into :webmock
129
+ config.configure_rspec_metadata!
130
+ config.filter_sensitive_data('BOOKINGSYNC_OAUTH_ACCESS_TOKEN') do
131
+ ENV['BOOKINGSYNC_OAUTH_ACCESS_TOKEN']
132
+ end
133
+ # Uncomment if using codeclimate
134
+ # config.ignore_hosts 'codeclimate.com'
135
+ end
136
+ ```
@@ -5,17 +5,3 @@ shared_examples_for :synced_model do
5
5
  it { is_expected.to include Synced::HasSyncedData }
6
6
  end
7
7
  end
8
-
9
- require 'vcr'
10
-
11
- VCR.configure do |config|
12
- config.cassette_library_dir = 'spec/fixtures/cassettes'
13
- config.hook_into :webmock
14
- config.configure_rspec_metadata!
15
- config.filter_sensitive_data('Bearer <OAUTH_TOKEN>') do |interaction|
16
- if interaction.request.headers['Authorization']
17
- interaction.request.headers['Authorization'].first
18
- end
19
- end
20
- config.ignore_hosts 'codeclimate.com'
21
- end
@@ -1,3 +1,3 @@
1
1
  module BookingsyncApplication
2
- VERSION = '0.1.7'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookingsync_application
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Nowicki
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-05-07 00:00:00.000000000 Z
13
+ date: 2015-05-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -46,30 +46,30 @@ dependencies:
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 0.0.16
49
+ version: 0.1.1
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: 0.0.16
56
+ version: 0.1.1
57
57
  - !ruby/object:Gem::Dependency
58
- name: rspec-rails
58
+ name: synced
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - ">="
61
+ - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '0'
63
+ version: 1.0.0
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - ">="
68
+ - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '0'
70
+ version: 1.0.0
71
71
  - !ruby/object:Gem::Dependency
72
- name: factory_girl_rails
72
+ name: dotenv-rails
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - ">="
@@ -83,13 +83,13 @@ dependencies:
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
- name: synced
86
+ name: appraisal
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
- type: :runtime
92
+ type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
@@ -97,13 +97,13 @@ dependencies:
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
- name: dotenv-rails
100
+ name: rspec-rails
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - ">="
104
104
  - !ruby/object:Gem::Version
105
105
  version: '0'
106
- type: :runtime
106
+ type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
@@ -111,7 +111,7 @@ dependencies:
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
- name: appraisal
114
+ name: factory_girl_rails
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="