roqua-core-api 0.3.0 → 0.6.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 +5 -5
- data/ChangeLog.md +18 -0
- data/lib/roqua/core_api/dossiers.rb +1 -1
- data/lib/roqua/core_api/models/active_virtus.rb +1 -1
- data/lib/roqua/core_api/send_email_to.rb +0 -1
- data/lib/roqua/core_api/send_invite_email.rb +1 -1
- data/lib/roqua/core_api/send_notification.rb +31 -0
- data/lib/roqua/core_api/sessions/hmac_auth_request.rb +1 -1
- data/lib/roqua/core_api/sessions.rb +6 -11
- data/lib/roqua/core_api/version.rb +1 -1
- data/lib/roqua/core_api.rb +1 -0
- data/lib/roqua-core-api.rb +2 -2
- data/spec/lib/roqua/core_api/create_dossier_group_spec.rb +1 -1
- data/spec/lib/roqua/core_api/create_dossier_spec.rb +1 -1
- data/spec/lib/roqua/core_api/dossiers_spec.rb +1 -1
- data/spec/lib/roqua/core_api/send_email_to_spec.rb +0 -2
- data/spec/lib/roqua/core_api/send_invite_email_spec.rb +1 -1
- data/spec/lib/roqua/core_api/sessions/auth_session_spec.rb +3 -3
- data/spec/lib/roqua/core_api/sessions/token_session_spec.rb +3 -3
- data/spec/lib/roqua/core_api/update_dossier_spec.rb +1 -1
- metadata +33 -90
- data/.document +0 -3
- data/.gitignore +0 -6
- data/.rspec +0 -1
- data/.yardopts +0 -2
- data/Gemfile +0 -16
- data/Guardfile +0 -4
- data/Rakefile +0 -41
- data/core_api.gemspec +0 -32
- data/lib/roqua/core_api/sessions/oauth_session.rb +0 -38
- data/lib/roqua/omniauth/rails_initializer.rb +0 -12
- data/lib/roqua/omniauth/strategies/doorkeeper.rb +0 -25
- data/spec/core_api_spec.rb +0 -7
- data/spec/fabricators/auth_session_fabricator.rb +0 -9
- data/spec/fabricators/basic_auth_session_fabricator.rb +0 -7
- data/spec/fabricators/dossier_fabricator.rb +0 -5
- data/spec/fabricators/oauth_session_fabricator.rb +0 -5
- data/spec/fabricators/person_fabricator.rb +0 -7
- data/spec/lib/roqua/core_api/sessions/oauth_session_spec.rb +0 -63
- data/spec/spec_helper.rb +0 -16
- data/spec/support/httpparty_helpers.rb +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 132bbf5e6c8240792d987ce61aeba2f3ee25b74d799728571ba55121ac9001c2
|
|
4
|
+
data.tar.gz: 63cb3e5713732f21313a27c8cb375685e776943b7ebc69e658014d24aa9660b2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 375cc3679fd4207b0741c41dca8590c81b150c0f3764eb294ebe08b77e3fb71e1f51bb171f99f1fe255e9ecaae88482ee0764a95a04834e7bfc16cd073bcc2d0
|
|
7
|
+
data.tar.gz: c4770992ef49118ee093f098cfc3a140aaf2c8da816f3e2e8b610967da88604aa6e12eb62bb6c7aa6b6431a0030927fd83599e39e1087ebe76802c8de1df0397
|
data/ChangeLog.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
### 0.6.0
|
|
2
|
+
|
|
3
|
+
require active_interaction 4.*
|
|
4
|
+
|
|
5
|
+
### 0.5.0
|
|
6
|
+
|
|
7
|
+
require ruby 2.7
|
|
8
|
+
loosen httparty gem requirement
|
|
9
|
+
|
|
10
|
+
### 0.4.0
|
|
11
|
+
|
|
12
|
+
* remove oauth_session
|
|
13
|
+
|
|
14
|
+
### 0.3.1
|
|
15
|
+
|
|
16
|
+
* Added Notification endpoint
|
|
17
|
+
* Deprecated email and text_message endpoint
|
|
18
|
+
|
|
1
19
|
### 0.3.0
|
|
2
20
|
|
|
3
21
|
* BACKWARD INCOMPATIBLE: SendTextMessage now expects a session instead of username/password
|
|
@@ -7,7 +7,7 @@ module Roqua
|
|
|
7
7
|
string :with_name, default: nil
|
|
8
8
|
string :with_external_identifier, default: nil
|
|
9
9
|
|
|
10
|
-
validates :dossier_group_id, presence: true, if:
|
|
10
|
+
validates :dossier_group_id, presence: true, if: -> { with_external_identifier.present? }
|
|
11
11
|
|
|
12
12
|
# usage:
|
|
13
13
|
# Roqua.CoreApi.Dossiers.run!.each do |d|
|
|
@@ -8,7 +8,7 @@ module Roqua
|
|
|
8
8
|
string :email_subject, default: nil
|
|
9
9
|
string :email_body, default: nil
|
|
10
10
|
|
|
11
|
-
validates :person_id, presence: true,
|
|
11
|
+
validates :person_id, presence: true, if: -> { dossier_id.nil? }
|
|
12
12
|
|
|
13
13
|
def execute
|
|
14
14
|
session.post url, params
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Roqua
|
|
2
|
+
module CoreApi
|
|
3
|
+
# @api private
|
|
4
|
+
class SendNotification < ActiveInteraction::Base
|
|
5
|
+
string :person_id, default: nil # if nil, to must be present.
|
|
6
|
+
string :dossier_id, default: nil
|
|
7
|
+
hash :attributes do
|
|
8
|
+
string :body_short
|
|
9
|
+
string :body_long
|
|
10
|
+
string :notification_type, default: nil
|
|
11
|
+
string :reference
|
|
12
|
+
string :subject
|
|
13
|
+
hash :addresses, default: nil, strip: false
|
|
14
|
+
hash :variables, strip: false, default: {}
|
|
15
|
+
array :notify_by do # [:sms, :email]
|
|
16
|
+
string
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Possible variables in the body/subject are:
|
|
21
|
+
# %firstname%,
|
|
22
|
+
# %lastname%,
|
|
23
|
+
# %initials%
|
|
24
|
+
def execute
|
|
25
|
+
CoreApi.basic_auth_session.post "/notifications", notification: attributes,
|
|
26
|
+
person_id: person_id,
|
|
27
|
+
dossier_id: dossier_id
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -37,7 +37,7 @@ module Roqua
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def calculate_hmac(request_method, path, params)
|
|
40
|
-
checker = Authmac::HmacChecker.new(consumer_secret, '
|
|
40
|
+
checker = Authmac::HmacChecker.new(consumer_secret, digest_function: 'sha256', message_format: :json)
|
|
41
41
|
params_to_sign = params.merge \
|
|
42
42
|
'request_method' => request_method,
|
|
43
43
|
'request_path' => "/api/v1#{path}",
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require 'httparty'
|
|
2
2
|
require 'roqua/core_api/sessions/auth_session'
|
|
3
|
-
require 'roqua/core_api/sessions/oauth_session'
|
|
4
3
|
require 'roqua/core_api/sessions/token_session'
|
|
5
4
|
require 'roqua/core_api/sessions/basic_auth_session'
|
|
6
5
|
require 'roqua/core_api/sessions/hmac_auth_request'
|
|
@@ -8,20 +7,16 @@ require 'roqua/core_api/sessions/hmac_auth_session'
|
|
|
8
7
|
|
|
9
8
|
module Roqua
|
|
10
9
|
module CoreApi
|
|
11
|
-
def self.
|
|
12
|
-
Sessions::
|
|
10
|
+
def self.token_session(...)
|
|
11
|
+
Sessions::TokenSession.new(...)
|
|
13
12
|
end
|
|
14
13
|
|
|
15
|
-
def self.
|
|
16
|
-
Sessions::
|
|
14
|
+
def self.basic_auth_session(...)
|
|
15
|
+
Sessions::BasicAuthSession.new(...)
|
|
17
16
|
end
|
|
18
17
|
|
|
19
|
-
def self.
|
|
20
|
-
Sessions::
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.hmac_auth_request(*arguments)
|
|
24
|
-
Sessions::HmacAuthRequest(*arguments)
|
|
18
|
+
def self.hmac_auth_request(...)
|
|
19
|
+
Sessions::HmacAuthRequest(...)
|
|
25
20
|
end
|
|
26
21
|
end
|
|
27
22
|
end
|
data/lib/roqua/core_api.rb
CHANGED
data/lib/roqua-core-api.rb
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
require ::File.expand_path('
|
|
2
|
-
require ::File.expand_path('
|
|
1
|
+
require ::File.expand_path('roqua/core_api', __dir__)
|
|
2
|
+
require ::File.expand_path('i18n/core_api_i18n', __dir__)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe CreateDossierGroup do
|
|
4
|
-
let(:session) { Fabricate :
|
|
4
|
+
let(:session) { Fabricate :roqua_core_api_token_session }
|
|
5
5
|
|
|
6
6
|
it 'performs a post on the /dossier_groups api path' do
|
|
7
7
|
expect(session).to receive(:post).with('/dossier_groups', dossier_group: {some: 'attributes'},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe CreateDossier do
|
|
4
|
-
let(:session) { Fabricate :
|
|
4
|
+
let(:session) { Fabricate :roqua_core_api_token_session }
|
|
5
5
|
let(:person) { Fabricate :roqua_core_api_person, id: nil }
|
|
6
6
|
let(:dossier) { Fabricate :roqua_core_api_dossier, id: nil }
|
|
7
7
|
let(:response) { httparty_response('id' => 'some_id') }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
3
|
describe Dossiers do
|
|
4
|
-
let(:session) { Fabricate :
|
|
4
|
+
let(:session) { Fabricate :roqua_core_api_token_session }
|
|
5
5
|
let(:dossier_group_id) { 'some_dg_id' }
|
|
6
6
|
let(:external_identifier) { 'some_eid' }
|
|
7
7
|
let(:response) { {'headers' => %w(id birth_year gender firstname lastname),
|
|
@@ -7,7 +7,6 @@ describe SendEmailTo do
|
|
|
7
7
|
it 'performs a post on the emails api path providing the person_id and the email attributes' do
|
|
8
8
|
email_attributes = {subject: 'some_subject',
|
|
9
9
|
body: 'some_body',
|
|
10
|
-
bcc: 'some@bcc',
|
|
11
10
|
content_type: 'some/content/type',
|
|
12
11
|
mail_type: 'some_mail_type'}
|
|
13
12
|
expect(session).to receive(:post).with '/emails', person_id: 'some_person_id', email: email_attributes
|
|
@@ -17,7 +16,6 @@ describe SendEmailTo do
|
|
|
17
16
|
it 'defaults the content_type to text/html' do
|
|
18
17
|
email_attributes = {subject: 'some_subject',
|
|
19
18
|
body: 'some_body',
|
|
20
|
-
bcc: 'some@bcc',
|
|
21
19
|
mail_type: 'some_mail_type'}
|
|
22
20
|
expect(session).to receive(:post).with '/emails', person_id: 'some_person_id',
|
|
23
21
|
email: email_attributes.merge(content_type: 'text/html')
|
|
@@ -34,7 +34,7 @@ describe AuthSession do
|
|
|
34
34
|
it 'performs a get request' do
|
|
35
35
|
allow(session).to receive(:basic_auth).and_return(username: 'some_username', password: 'some_password')
|
|
36
36
|
allow(session).to receive(:headers).and_return(some: 'header')
|
|
37
|
-
expect(HTTParty).to receive(:get).with('http://core.
|
|
37
|
+
expect(HTTParty).to receive(:get).with('http://core.roqua.eu/api/v1/some_path.json',
|
|
38
38
|
query: {some: 'param'},
|
|
39
39
|
headers: {some: 'header'},
|
|
40
40
|
basic_auth: {username: 'some_username', password: 'some_password'},
|
|
@@ -44,7 +44,7 @@ describe AuthSession do
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
it 'returns the response on sucess status' do
|
|
47
|
-
stub_request(:get, 'http://core.
|
|
47
|
+
stub_request(:get, 'http://core.roqua.eu/api/v1/some_path.json?').to_return(
|
|
48
48
|
status: 201,
|
|
49
49
|
body: '{ "success": true }',
|
|
50
50
|
headers: { 'Content-Type' => 'application/json' })
|
|
@@ -52,7 +52,7 @@ describe AuthSession do
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
it 'returns the response on a 422 status' do
|
|
55
|
-
stub_request(:get, 'http://core.
|
|
55
|
+
stub_request(:get, 'http://core.roqua.eu/api/v1/some_path.json?').to_return(
|
|
56
56
|
status: 422,
|
|
57
57
|
body: '{ "errors": { "column": ["wrong"] } }',
|
|
58
58
|
headers: { 'Content-Type' => 'application/json' })
|
|
@@ -27,7 +27,7 @@ describe TokenSession do
|
|
|
27
27
|
|
|
28
28
|
describe '#logout' do
|
|
29
29
|
it 'sends a put request to the session#destroy' do
|
|
30
|
-
expect(HTTParty).to receive(:delete).with("http://core.
|
|
30
|
+
expect(HTTParty).to receive(:delete).with("http://core.roqua.eu/api/v1sessions/destroy.json",
|
|
31
31
|
headers: {"Authorization" => "Session some_access_token"},
|
|
32
32
|
query: {},
|
|
33
33
|
basic_auth: nil,
|
|
@@ -49,7 +49,7 @@ describe TokenSession do
|
|
|
49
49
|
|
|
50
50
|
describe '#access_denied' do
|
|
51
51
|
it 'raises a no_session error when response is 401 with a no_session response' do
|
|
52
|
-
stub_request(:get, 'http://core.
|
|
52
|
+
stub_request(:get, 'http://core.roqua.eu/api/v1/some_path.json?').to_return(
|
|
53
53
|
status: 401,
|
|
54
54
|
body: '{ "no_session": true }',
|
|
55
55
|
headers: { 'Content-Type' => 'application/json' })
|
|
@@ -57,7 +57,7 @@ describe TokenSession do
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it 'raises a unauthorized error when response is 401 without a no_session response' do
|
|
60
|
-
stub_request(:get, 'http://core.
|
|
60
|
+
stub_request(:get, 'http://core.roqua.eu/api/v1/some_path.json?').to_return(
|
|
61
61
|
status: 401,
|
|
62
62
|
body: '',
|
|
63
63
|
headers: { 'Content-Type' => 'application/json' })
|
metadata
CHANGED
|
@@ -1,57 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: roqua-core-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Marten Veldthuis
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-11-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: httparty
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.14.0
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.14.0
|
|
27
13
|
- !ruby/object:Gem::Dependency
|
|
28
14
|
name: active_interaction
|
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
|
30
16
|
requirements:
|
|
31
17
|
- - "~>"
|
|
32
18
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
19
|
+
version: '4.0'
|
|
34
20
|
type: :runtime
|
|
35
21
|
prerelease: false
|
|
36
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
23
|
requirements:
|
|
38
24
|
- - "~>"
|
|
39
25
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
26
|
+
version: '4.0'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
28
|
+
name: httparty
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - "~>"
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
33
|
+
version: '0.14'
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - "~>"
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
40
|
+
version: '0.14'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: virtus
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -70,72 +56,72 @@ dependencies:
|
|
|
70
56
|
name: bundler
|
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
|
72
58
|
requirements:
|
|
73
|
-
- - "
|
|
59
|
+
- - ">="
|
|
74
60
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '
|
|
61
|
+
version: '0'
|
|
76
62
|
type: :development
|
|
77
63
|
prerelease: false
|
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
65
|
requirements:
|
|
80
|
-
- - "
|
|
66
|
+
- - ">="
|
|
81
67
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '
|
|
68
|
+
version: '0'
|
|
83
69
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
70
|
+
name: dotenv
|
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
|
86
72
|
requirements:
|
|
87
73
|
- - "~>"
|
|
88
74
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '10
|
|
75
|
+
version: '0.10'
|
|
90
76
|
type: :development
|
|
91
77
|
prerelease: false
|
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
79
|
requirements:
|
|
94
80
|
- - "~>"
|
|
95
81
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '10
|
|
82
|
+
version: '0.10'
|
|
97
83
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name:
|
|
84
|
+
name: fabrication
|
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
|
100
86
|
requirements:
|
|
101
87
|
- - "~>"
|
|
102
88
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '
|
|
89
|
+
version: '2.9'
|
|
104
90
|
type: :development
|
|
105
91
|
prerelease: false
|
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
93
|
requirements:
|
|
108
94
|
- - "~>"
|
|
109
95
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '
|
|
96
|
+
version: '2.9'
|
|
111
97
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
98
|
+
name: rake
|
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
|
114
100
|
requirements:
|
|
115
101
|
- - "~>"
|
|
116
102
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '
|
|
103
|
+
version: '13.0'
|
|
118
104
|
type: :development
|
|
119
105
|
prerelease: false
|
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
107
|
requirements:
|
|
122
108
|
- - "~>"
|
|
123
109
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '
|
|
110
|
+
version: '13.0'
|
|
125
111
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
112
|
+
name: rspec
|
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
|
128
114
|
requirements:
|
|
129
115
|
- - "~>"
|
|
130
116
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
117
|
+
version: '3.0'
|
|
132
118
|
type: :development
|
|
133
119
|
prerelease: false
|
|
134
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
121
|
requirements:
|
|
136
122
|
- - "~>"
|
|
137
123
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: '
|
|
124
|
+
version: '3.0'
|
|
139
125
|
- !ruby/object:Gem::Dependency
|
|
140
126
|
name: webmock
|
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -151,37 +137,29 @@ dependencies:
|
|
|
151
137
|
- !ruby/object:Gem::Version
|
|
152
138
|
version: '1.17'
|
|
153
139
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
140
|
+
name: yard
|
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
|
156
142
|
requirements:
|
|
157
143
|
- - "~>"
|
|
158
144
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: '0.
|
|
145
|
+
version: '0.8'
|
|
160
146
|
type: :development
|
|
161
147
|
prerelease: false
|
|
162
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
149
|
requirements:
|
|
164
150
|
- - "~>"
|
|
165
151
|
- !ruby/object:Gem::Version
|
|
166
|
-
version: '0.
|
|
152
|
+
version: '0.8'
|
|
167
153
|
description: Provides authenticated access to Core
|
|
168
154
|
email: marten@veldthuis.com
|
|
169
155
|
executables: []
|
|
170
156
|
extensions: []
|
|
171
157
|
extra_rdoc_files: []
|
|
172
158
|
files:
|
|
173
|
-
- ".document"
|
|
174
|
-
- ".gitignore"
|
|
175
|
-
- ".rspec"
|
|
176
|
-
- ".yardopts"
|
|
177
159
|
- ChangeLog.md
|
|
178
|
-
- Gemfile
|
|
179
|
-
- Guardfile
|
|
180
160
|
- LICENSE.txt
|
|
181
161
|
- README.md
|
|
182
|
-
- Rakefile
|
|
183
162
|
- config/locales/validation_errors.yml
|
|
184
|
-
- core_api.gemspec
|
|
185
163
|
- lib/i18n/core_api_i18n.rb
|
|
186
164
|
- lib/roqua-core-api.rb
|
|
187
165
|
- lib/roqua/core_api.rb
|
|
@@ -207,26 +185,18 @@ files:
|
|
|
207
185
|
- lib/roqua/core_api/person.rb
|
|
208
186
|
- lib/roqua/core_api/send_email_to.rb
|
|
209
187
|
- lib/roqua/core_api/send_invite_email.rb
|
|
188
|
+
- lib/roqua/core_api/send_notification.rb
|
|
210
189
|
- lib/roqua/core_api/send_text_message_to.rb
|
|
211
190
|
- lib/roqua/core_api/sessions.rb
|
|
212
191
|
- lib/roqua/core_api/sessions/auth_session.rb
|
|
213
192
|
- lib/roqua/core_api/sessions/basic_auth_session.rb
|
|
214
193
|
- lib/roqua/core_api/sessions/hmac_auth_request.rb
|
|
215
194
|
- lib/roqua/core_api/sessions/hmac_auth_session.rb
|
|
216
|
-
- lib/roqua/core_api/sessions/oauth_session.rb
|
|
217
195
|
- lib/roqua/core_api/sessions/token_session.rb
|
|
218
196
|
- lib/roqua/core_api/sso_login.rb
|
|
219
197
|
- lib/roqua/core_api/update_dossier.rb
|
|
220
198
|
- lib/roqua/core_api/update_person.rb
|
|
221
199
|
- lib/roqua/core_api/version.rb
|
|
222
|
-
- lib/roqua/omniauth/rails_initializer.rb
|
|
223
|
-
- lib/roqua/omniauth/strategies/doorkeeper.rb
|
|
224
|
-
- spec/core_api_spec.rb
|
|
225
|
-
- spec/fabricators/auth_session_fabricator.rb
|
|
226
|
-
- spec/fabricators/basic_auth_session_fabricator.rb
|
|
227
|
-
- spec/fabricators/dossier_fabricator.rb
|
|
228
|
-
- spec/fabricators/oauth_session_fabricator.rb
|
|
229
|
-
- spec/fabricators/person_fabricator.rb
|
|
230
200
|
- spec/lib/roqua/core_api/create_dossier_group_spec.rb
|
|
231
201
|
- spec/lib/roqua/core_api/create_dossier_spec.rb
|
|
232
202
|
- spec/lib/roqua/core_api/dossiers_spec.rb
|
|
@@ -238,16 +208,13 @@ files:
|
|
|
238
208
|
- spec/lib/roqua/core_api/send_text_message_to_spec.rb
|
|
239
209
|
- spec/lib/roqua/core_api/sessions/auth_session_spec.rb
|
|
240
210
|
- spec/lib/roqua/core_api/sessions/basic_auth_session_spec.rb
|
|
241
|
-
- spec/lib/roqua/core_api/sessions/oauth_session_spec.rb
|
|
242
211
|
- spec/lib/roqua/core_api/sessions/token_session_spec.rb
|
|
243
212
|
- spec/lib/roqua/core_api/update_dossier_spec.rb
|
|
244
|
-
- spec/spec_helper.rb
|
|
245
|
-
- spec/support/httpparty_helpers.rb
|
|
246
213
|
homepage: https://github.com/roqua/core/blob/master/core_api/README.markdown
|
|
247
214
|
licenses:
|
|
248
215
|
- MIT
|
|
249
216
|
metadata: {}
|
|
250
|
-
post_install_message:
|
|
217
|
+
post_install_message:
|
|
251
218
|
rdoc_options: []
|
|
252
219
|
require_paths:
|
|
253
220
|
- lib
|
|
@@ -255,39 +222,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
255
222
|
requirements:
|
|
256
223
|
- - ">="
|
|
257
224
|
- !ruby/object:Gem::Version
|
|
258
|
-
version: '
|
|
225
|
+
version: '2.7'
|
|
259
226
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
260
227
|
requirements:
|
|
261
228
|
- - ">="
|
|
262
229
|
- !ruby/object:Gem::Version
|
|
263
230
|
version: '0'
|
|
264
231
|
requirements: []
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
signing_key:
|
|
232
|
+
rubygems_version: 3.1.6
|
|
233
|
+
signing_key:
|
|
268
234
|
specification_version: 4
|
|
269
235
|
summary: API wrapper gem around Core's API
|
|
270
|
-
test_files:
|
|
271
|
-
- spec/core_api_spec.rb
|
|
272
|
-
- spec/fabricators/auth_session_fabricator.rb
|
|
273
|
-
- spec/fabricators/basic_auth_session_fabricator.rb
|
|
274
|
-
- spec/fabricators/dossier_fabricator.rb
|
|
275
|
-
- spec/fabricators/oauth_session_fabricator.rb
|
|
276
|
-
- spec/fabricators/person_fabricator.rb
|
|
277
|
-
- spec/lib/roqua/core_api/create_dossier_group_spec.rb
|
|
278
|
-
- spec/lib/roqua/core_api/create_dossier_spec.rb
|
|
279
|
-
- spec/lib/roqua/core_api/dossiers_spec.rb
|
|
280
|
-
- spec/lib/roqua/core_api/models/active_virtus_spec.rb
|
|
281
|
-
- spec/lib/roqua/core_api/models/dossier_spec.rb
|
|
282
|
-
- spec/lib/roqua/core_api/models/person_spec.rb
|
|
283
|
-
- spec/lib/roqua/core_api/send_email_to_spec.rb
|
|
284
|
-
- spec/lib/roqua/core_api/send_invite_email_spec.rb
|
|
285
|
-
- spec/lib/roqua/core_api/send_text_message_to_spec.rb
|
|
286
|
-
- spec/lib/roqua/core_api/sessions/auth_session_spec.rb
|
|
287
|
-
- spec/lib/roqua/core_api/sessions/basic_auth_session_spec.rb
|
|
288
|
-
- spec/lib/roqua/core_api/sessions/oauth_session_spec.rb
|
|
289
|
-
- spec/lib/roqua/core_api/sessions/token_session_spec.rb
|
|
290
|
-
- spec/lib/roqua/core_api/update_dossier_spec.rb
|
|
291
|
-
- spec/spec_helper.rb
|
|
292
|
-
- spec/support/httpparty_helpers.rb
|
|
293
|
-
has_rdoc:
|
|
236
|
+
test_files: []
|
data/.document
DELETED
data/.gitignore
DELETED
data/.rspec
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
--colour --format documentation
|
data/.yardopts
DELETED
data/Gemfile
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
source 'https://rubygems.org'
|
|
2
|
-
|
|
3
|
-
gemspec
|
|
4
|
-
gem 'httparty', '= 0.14.0'
|
|
5
|
-
gem 'omniauth-oauth2', '= 1.1.0'
|
|
6
|
-
gem 'virtus', '= 1.0.0'
|
|
7
|
-
|
|
8
|
-
group :development do
|
|
9
|
-
gem 'kramdown'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
group :test do
|
|
13
|
-
gem 'guard', '~> 2.6'
|
|
14
|
-
gem 'guard-rspec', '~> 4.2'
|
|
15
|
-
gem 'fuubar', '~> 2.0'
|
|
16
|
-
end
|
data/Guardfile
DELETED
data/Rakefile
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
|
|
3
|
-
require 'rubygems'
|
|
4
|
-
|
|
5
|
-
begin
|
|
6
|
-
require 'bundler'
|
|
7
|
-
rescue LoadError => e
|
|
8
|
-
warn e.message
|
|
9
|
-
warn "Run `gem install bundler` to install Bundler."
|
|
10
|
-
exit(-1)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
begin
|
|
14
|
-
Bundler.setup(:development)
|
|
15
|
-
rescue Bundler::BundlerError => e
|
|
16
|
-
warn e.message
|
|
17
|
-
warn "Run `bundle install` to install missing gems."
|
|
18
|
-
exit e.status_code
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
require 'rake'
|
|
22
|
-
|
|
23
|
-
require 'rspec/core/rake_task'
|
|
24
|
-
RSpec::Core::RakeTask.new
|
|
25
|
-
|
|
26
|
-
task test: :spec
|
|
27
|
-
task default: :spec
|
|
28
|
-
|
|
29
|
-
# run bundle in parent dir to update Gemfile.lock
|
|
30
|
-
task :release do
|
|
31
|
-
Bundler.with_clean_env do
|
|
32
|
-
`bundle --gemfile=../Gemfile`
|
|
33
|
-
end
|
|
34
|
-
`git add ../Gemfile.lock && git commit -m 'update roqua-core-api in Gemfile.lock'`
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
require "bundler/gem_tasks"
|
|
38
|
-
|
|
39
|
-
require 'yard'
|
|
40
|
-
YARD::Rake::YardocTask.new
|
|
41
|
-
task doc: :yard
|
data/core_api.gemspec
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
|
2
|
-
|
|
3
|
-
require File.expand_path('../lib/roqua/core_api/version', __FILE__)
|
|
4
|
-
|
|
5
|
-
Gem::Specification.new do |gem|
|
|
6
|
-
gem.name = "roqua-core-api"
|
|
7
|
-
gem.version = Roqua::CoreApi::VERSION
|
|
8
|
-
gem.summary = %q{API wrapper gem around Core's API}
|
|
9
|
-
gem.description = %q{Provides authenticated access to Core}
|
|
10
|
-
gem.license = "MIT"
|
|
11
|
-
gem.authors = ["Marten Veldthuis"]
|
|
12
|
-
gem.email = "marten@veldthuis.com"
|
|
13
|
-
gem.homepage = "https://github.com/roqua/core/blob/master/core_api/README.markdown"
|
|
14
|
-
|
|
15
|
-
gem.files = `git ls-files`.split($/)
|
|
16
|
-
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
17
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
18
|
-
gem.require_paths = ['lib']
|
|
19
|
-
|
|
20
|
-
gem.add_dependency 'httparty', '~> 0.14.0'
|
|
21
|
-
gem.add_dependency 'active_interaction', '~> 3.2'
|
|
22
|
-
gem.add_dependency 'omniauth-oauth2', '~> 1.1'
|
|
23
|
-
gem.add_dependency 'virtus', '~> 1.0'
|
|
24
|
-
|
|
25
|
-
gem.add_development_dependency 'bundler', '~> 1.0'
|
|
26
|
-
gem.add_development_dependency 'rake', '~> 10.0'
|
|
27
|
-
gem.add_development_dependency 'yard', '~> 0.8'
|
|
28
|
-
gem.add_development_dependency 'rspec', '~> 3.0'
|
|
29
|
-
gem.add_development_dependency 'fabrication', '~> 2.9'
|
|
30
|
-
gem.add_development_dependency 'webmock', '~> 1.17'
|
|
31
|
-
gem.add_development_dependency 'dotenv', '~> 0.10'
|
|
32
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module Roqua
|
|
2
|
-
module CoreApi
|
|
3
|
-
module Sessions
|
|
4
|
-
class OAuthSession < AuthSession
|
|
5
|
-
attr_reader :access_token
|
|
6
|
-
|
|
7
|
-
def initialize(access_token:, **additional_arguments)
|
|
8
|
-
@access_token = access_token
|
|
9
|
-
super additional_arguments
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def logout_url(return_to:)
|
|
13
|
-
"#{core_site}/session/destroy?token=#{access_token}&return_to=#{CGI.escape return_to}"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# ping the server to check if session is still valid.
|
|
17
|
-
# Will throw NoSession as usual if not.
|
|
18
|
-
def ping
|
|
19
|
-
get "/ping"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def access_denied(response)
|
|
25
|
-
if response['no_session']
|
|
26
|
-
fail NoSession
|
|
27
|
-
else
|
|
28
|
-
fail Unauthorized
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def headers(_request_method, _path, _params)
|
|
33
|
-
{"Authorization" => "Bearer #{access_token}"}
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require 'omniauth-oauth2'
|
|
2
|
-
require 'roqua/omniauth/strategies/doorkeeper'
|
|
3
|
-
|
|
4
|
-
OmniAuth.config.logger = Rails.logger
|
|
5
|
-
|
|
6
|
-
Rails.application.config.middleware.use OmniAuth::Builder do
|
|
7
|
-
provider :doorkeeper,
|
|
8
|
-
ENV.fetch('CORE_OAUTH_CLIENT_ID'),
|
|
9
|
-
ENV.fetch('CORE_OAUTH_CLIENT_SECRET'),
|
|
10
|
-
client_options: {site: ENV.fetch('CORE_SITE')},
|
|
11
|
-
authorize_params: {organization_id: ENV['CORE_ORGANIZATION']}
|
|
12
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
module OmniAuth
|
|
2
|
-
module Strategies
|
|
3
|
-
class Doorkeeper < OmniAuth::Strategies::OAuth2
|
|
4
|
-
option :name, :doorkeeper
|
|
5
|
-
option :client_options, site: 'http://core.dev',
|
|
6
|
-
authorize_path: '/oauth/authorize'
|
|
7
|
-
|
|
8
|
-
uid do
|
|
9
|
-
raw_info["id"]
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
info do
|
|
13
|
-
{dossier_id: raw_info['dossier_id'],
|
|
14
|
-
username: raw_info['username'],
|
|
15
|
-
role: raw_info['role'],
|
|
16
|
-
person_id: raw_info['person_id'],
|
|
17
|
-
dossier_groups: raw_info['dossier_groups']}
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def raw_info
|
|
21
|
-
@raw_info ||= access_token.get('/api/v1/me.json').parsed['me']
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
data/spec/core_api_spec.rb
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
Fabricator(:roqua_core_api_auth_session, from: Roqua::CoreApi::Sessions::AuthSession) do
|
|
2
|
-
initialize_with { Roqua::CoreApi::Sessions::AuthSession.new core_site: 'http://core.dev' }
|
|
3
|
-
end
|
|
4
|
-
|
|
5
|
-
Fabricator(:roqua_core_api_token_session, from: Roqua::CoreApi::Sessions::TokenSession) do
|
|
6
|
-
initialize_with do
|
|
7
|
-
Roqua::CoreApi::Sessions::TokenSession.new access_token: 'some_access_token', core_site: 'http://core.dev'
|
|
8
|
-
end
|
|
9
|
-
end
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
Fabricator(:roqua_core_api_basic_auth_session, from: Roqua::CoreApi::Sessions::BasicAuthSession) do
|
|
2
|
-
initialize_with do
|
|
3
|
-
Roqua::CoreApi::Sessions::BasicAuthSession.new username: 'some_username',
|
|
4
|
-
password: 'some_password',
|
|
5
|
-
core_site: 'http://core.dev'
|
|
6
|
-
end
|
|
7
|
-
end
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'webmock/rspec'
|
|
3
|
-
|
|
4
|
-
describe OAuthSession do
|
|
5
|
-
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
|
6
|
-
let(:response) { double('response', code: 201, parsed_response: 'some_response') }
|
|
7
|
-
|
|
8
|
-
describe '#initialize' do
|
|
9
|
-
it 'sets the access_token instance variable' do
|
|
10
|
-
session = Roqua::CoreApi.oauth_session access_token: 'some_access_token'
|
|
11
|
-
expect(session.access_token).to eq('some_access_token')
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it 'allows to override the core_site variable' do
|
|
15
|
-
session = Roqua::CoreApi.oauth_session access_token: 'some_access_token', core_site: 'some_core_site'
|
|
16
|
-
expect(session.core_site).to eq('some_core_site')
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'defaults the AuthSession core_site CORE_SITE env variable default value' do
|
|
20
|
-
original_env_core_site = ENV['CORE_SITE']
|
|
21
|
-
ENV['CORE_SITE'] = 'some_env_core_site'
|
|
22
|
-
session = Roqua::CoreApi.oauth_session access_token: 'some_access_token'
|
|
23
|
-
ENV['CORE_SITE'] = original_env_core_site
|
|
24
|
-
expect(session.core_site).to eq('some_env_core_site')
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
describe '#logout_url' do
|
|
29
|
-
it 'returns the oauth session destroy url with an escaped redirect_to parameter' do
|
|
30
|
-
expect(session.logout_url return_to: 'some redirect to')
|
|
31
|
-
.to eq('http://core.dev/session/destroy?token=some_access_token&return_to=some+redirect+to')
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe 'headers' do
|
|
36
|
-
it 'sets the Authorization header' do
|
|
37
|
-
expect(HTTParty).to receive(:get).with(an_instance_of(String),
|
|
38
|
-
headers: {"Authorization" => "Bearer some_access_token"},
|
|
39
|
-
query: {},
|
|
40
|
-
basic_auth: nil,
|
|
41
|
-
timeout: nil).and_return(response)
|
|
42
|
-
session.get 'some_path'
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe '#access_denied' do
|
|
47
|
-
it 'raises a no_session error when response is 401 with a no_session response' do
|
|
48
|
-
stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
|
|
49
|
-
status: 401,
|
|
50
|
-
body: '{ "no_session": true }',
|
|
51
|
-
headers: { 'Content-Type' => 'application/json' })
|
|
52
|
-
expect { session.get '/some_path' }.to raise_error(NoSession)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it 'raises a unauthorized error when response is 401 without a no_session response' do
|
|
56
|
-
stub_request(:get, 'http://core.dev/api/v1/some_path.json?').to_return(
|
|
57
|
-
status: 401,
|
|
58
|
-
body: '',
|
|
59
|
-
headers: { 'Content-Type' => 'application/json' })
|
|
60
|
-
expect { session.get '/some_path' }.to raise_error(Unauthorized)
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require 'rspec'
|
|
2
|
-
require 'fabrication'
|
|
3
|
-
|
|
4
|
-
require 'dotenv'
|
|
5
|
-
Dotenv.load(File.expand_path("../../.env", File.dirname(__FILE__)))
|
|
6
|
-
|
|
7
|
-
require 'roqua-core-api'
|
|
8
|
-
include Roqua::CoreApi
|
|
9
|
-
include Roqua::CoreApi::Sessions
|
|
10
|
-
include Roqua::CoreApi::Models
|
|
11
|
-
|
|
12
|
-
Dir[File.join(File.expand_path(File.dirname(__FILE__)), 'support', '*.rb')].each { |f| require f }
|
|
13
|
-
|
|
14
|
-
I18n.load_path << Dir[File.join(File.expand_path(File.dirname(__FILE__)), '..', 'config', 'locales', '*.yml')]
|
|
15
|
-
I18n.enforce_available_locales = false
|
|
16
|
-
I18n.default_locale = :nl
|