bjond-api 0.0.4 → 0.1.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: 354223f494f90bed35df69c78aa7bf2ec88ef0d8
4
- data.tar.gz: 2d473d166433b805eea1168d5efeb5ee196801ea
3
+ metadata.gz: 2b1b8c62b62da444bbae2b0a5e7045c329ab00e9
4
+ data.tar.gz: 400eae6848c9dd1943a0dd9d69b565682021684d
5
5
  SHA512:
6
- metadata.gz: 3abcafcbce95c6ddaac2e394fdd2871918e42ec1d94d1b1b232ca1e550b689c749c872ebf6cf36d08cb26078df56f22a2ec9d385ef37f3c971a8a20104c2d913
7
- data.tar.gz: 4c21d85b90b1fed0f522c3efeca1747d4f84a4e07d82f29ca33ea61d57f979cd0dd9880e81d69e1a0fa29c99c390fe095696560027878e5f4acf98c8cfc6e9fa
6
+ metadata.gz: 221bcf5d4e198a9f47918986c121d9de4480547541e503eb49287da490c059e7f5c7f418db01e1fd8d13aa2f7344e5cd1257d383139e4711c4bd510da7f8c6e8
7
+ data.tar.gz: 7f95fbcdd9583273dbc53ff52a12b35a8be2ecbca2df26b04847863af4e83b8f25cadfadbaa582701265ce49d1a74086c65c28077a60514625ab2c40d638fcb7
data/README.rdoc CHANGED
@@ -4,6 +4,12 @@ A rubygem wrapper for the Bjönd API.
4
4
 
5
5
  This gem also contains an engine with endpoints that are made to interface with Bjond server-core.
6
6
 
7
+ == Installation
8
+
9
+ gem install 'bjond-api'
10
+
11
+ For specific version info visit the gem page[https://rubygems.org/gems/bjond-api].
12
+
7
13
  == Creating a Bjond Integration App
8
14
 
9
15
  To create a Bjond App using the Ruby on Rails framework, perform the following actions within your Rails application.
@@ -27,8 +33,6 @@ To install necessary migrations, add this to your Rails' application.rb file -
27
33
 
28
34
  rake db:migrate
29
35
 
30
- The `config.paths['db/migrate']` line can be removed once the migrations are copied.
31
-
32
36
  (5) Generate Configuration Files
33
37
 
34
38
  To get you started, generate a config file by running the following command:
@@ -70,4 +74,13 @@ Again, BJOND_APP_ENCRYPTION_KEY can be changed. It just needs to match the value
70
74
  - register_app
71
75
 
72
76
 
77
+ - fire_event
78
+
79
+
80
+
81
+ == Environment Variables
82
+
83
+ - BJOND_ADAPTER_AUDIENCE
84
+ - BJOND_ADAPTER_SUBJECT
85
+
73
86
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.1.0
@@ -2,6 +2,7 @@ class BjondservicesController < ApplicationController
2
2
 
3
3
  require 'bjond-api'
4
4
  require 'syruppay_jose'
5
+ include BjondJwtHelper
5
6
 
6
7
  skip_before_filter :verify_authenticity_token, :only => [:get_schema, :register_group_endpoint, :configure_group_endpoint]
7
8
 
@@ -31,7 +32,7 @@ class BjondservicesController < ApplicationController
31
32
 
32
33
  def register_group_endpoint
33
34
  registration = BjondRegistration.find_registration_by_remote_ip(request.remote_ip)
34
- service = BjondService.find_or_initialize_by(:group_id => params[:groupid], :registration_id => registration.id)
35
+ service = BjondService.find_or_initialize_by(:group_id => params[:groupid], :bjond_registration_id => registration.id)
35
36
  if (service.endpoint != params[:endpoint])
36
37
  service.endpoint = params[:endpoint]
37
38
  service.save
@@ -60,24 +61,4 @@ class BjondservicesController < ApplicationController
60
61
  render :json => jwt_encode_payload(payload.to_json, bjond_registration)
61
62
  end
62
63
 
63
- private
64
- def jwt_encode_payload(json, bjond_registration)
65
- payload = {
66
- :json => json,
67
- :iss => 'Bjönd, Inc.',
68
- :aud => ENV['BJOND_ADAPTER_AUDIENCE'],
69
- :exp => Time.now.to_i + 10*3600,
70
- :nbf => Time.now.to_i - 2*3600,
71
- :sub => ENV['BJOND_ADAPTER_SUBJECT']
72
- }.to_json
73
- header = {:alg => 'A128KW', :enc => 'A128CBC-HS256'}
74
- return SyrupPay::JsonEncryptionCompactSerialization.serialization(Base64.decode64(bjond_registration.encryption_key), header, payload)
75
- end
76
-
77
- def jwt_decode_payload_and_return_json(token, bjond_registration)
78
- claims_json = SyrupPay::CompactDeserialization.deserialization(Base64.decode64(bjond_registration.encryption_key), token)
79
- claims = JSON.parse(claims_json)
80
- return JSON.parse(claims['json'][0])
81
- end
82
-
83
64
  end
data/bjond-api.gemspec CHANGED
@@ -2,16 +2,14 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: bjond-api 0.0.4 ruby lib
6
5
 
7
6
  Gem::Specification.new do |s|
8
7
  s.name = "bjond-api"
9
- s.version = "0.0.4"
8
+ s.version = "0.1.0"
10
9
 
11
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
11
  s.authors = ["Blake Rego"]
14
- s.date = "2016-07-29"
12
+ s.date = "2016-08-01"
15
13
  s.description = "Rails engine that provides communication between Bj\u{f6}nd Server Core and a client app."
16
14
  s.email = "blake.rego@bjondinc.com"
17
15
  s.executables = ["rails"]
@@ -34,7 +32,6 @@ Gem::Specification.new do |s|
34
32
  "app/controllers/bjond_registrations_controller.rb",
35
33
  "app/controllers/bjondservices_controller.rb",
36
34
  "app/helpers/.keep",
37
- "app/helpers/bjond_registrations_helper.rb",
38
35
  "app/mailers/.keep",
39
36
  "app/models/.keep",
40
37
  "app/models/bjond_registration.rb",
@@ -58,6 +55,7 @@ Gem::Specification.new do |s|
58
55
  "db/migrate/20160727144938_add_host_and_ip_to_bjond_registrations.rb",
59
56
  "db/migrate/20160727191615_create_bjond_services.rb",
60
57
  "db/migrate/20160727194217_add_registration_id_to_bjond_service.rb",
58
+ "db/migrate/20160801184749_rename_registration_idin_bjond_service_to_bjond_registration_id.rb",
61
59
  "lib/bjond-api.rb",
62
60
  "lib/bjond-app-config.rb",
63
61
  "lib/bjond-app-definition.rb",
@@ -65,12 +63,14 @@ Gem::Specification.new do |s|
65
63
  "lib/bjond-consequence.rb",
66
64
  "lib/bjond-event.rb",
67
65
  "lib/bjond-field.rb",
66
+ "lib/bjond-jwt.rb",
68
67
  "lib/generators/initializer_generator.rb",
69
68
  "lib/generators/templates/initializer.rb"
70
69
  ]
71
70
  s.homepage = "http://github.com/Bjond/bjond-integration-gem"
72
71
  s.licenses = ["GPL"]
73
- s.rubygems_version = "2.4.8"
72
+ s.require_paths = ["lib"]
73
+ s.rubygems_version = "2.0.14"
74
74
  s.summary = "Interface that facilitates communication with Bj\u{f6}nd servers."
75
75
 
76
76
  if s.respond_to? :specification_version then
@@ -0,0 +1,5 @@
1
+ class RenameRegistrationIdinBjondServiceToBjondRegistrationId < ActiveRecord::Migration
2
+ def change
3
+ rename_column :bjond_services, :registration_id, :bjond_registration_id
4
+ end
5
+ end
data/lib/bjond-api.rb CHANGED
@@ -5,17 +5,37 @@ require 'bjond-field'
5
5
  require 'faraday'
6
6
  require 'bjond-app/engine'
7
7
  require 'bjond-app-config'
8
+ require 'bjond-jwt'
9
+ include BjondJwt
8
10
 
9
11
  module BjondApi
10
12
 
13
+ ##
14
+ # Registers the given integration_app with a bjond-server.
11
15
  def self.register_app(integration_app, bjondhost=ENV['BJOND_SERVER'])
12
16
  conn = Faraday.new(:url => bjondhost)
13
17
  return conn.post do |req|
14
- req.url '/server-core/services/integrationmanager/register?cache=1'
18
+ req.url '/server-core/services/integrationmanager/register'
15
19
  req.headers['Content-Type'] = 'application/json'
16
20
  req.body = integration_app.to_json
17
21
  end
18
22
  end
19
23
 
24
+ ##
25
+ # Fires events to all bjond_registrations
26
+ def fire_event(bjond_registration, payload)
27
+ services = BjondService.where(:bjond_registration_id => bjond_registration.id)
28
+ connections = []
29
+ services.each do |bjond_svc|
30
+ conn = Faraday.new(:url => bjond_svc.endpoint)
31
+ conn.post do |req|
32
+ req.headers['Content-Type'] = 'application/json'
33
+ req.body = BjondJwt::jwt_encode_payload(payload, bjond_registration)
34
+ end
35
+ end
36
+
37
+ return connections
38
+ end
39
+
20
40
  end
21
41
 
@@ -1,11 +1,4 @@
1
1
  module BjondApi
2
2
  class Engine < ::Rails::Engine
3
- initializer :append_migrations do |app|
4
- unless app.root.to_s.match root.to_s
5
- config.paths["db/migrate"].expanded.each do |expanded_path|
6
- app.config.paths["db/migrate"] << expanded_path
7
- end
8
- end
9
- end
10
3
  end
11
4
  end
data/lib/bjond-jwt.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'syruppay_jose'
2
+
3
+ module BjondJwt
4
+ def jwt_encode_payload(json, bjond_registration)
5
+ payload = {
6
+ :json => json,
7
+ :iss => 'Bjönd, Inc.',
8
+ :aud => ENV['BJOND_ADAPTER_AUDIENCE'],
9
+ :exp => Time.now.to_i + 10*3600,
10
+ :nbf => Time.now.to_i - 2*3600,
11
+ :sub => ENV['BJOND_ADAPTER_SUBJECT']
12
+ }.to_json
13
+ header = {:alg => 'A128KW', :enc => 'A128CBC-HS256'}
14
+ return SyrupPay::JsonEncryptionCompactSerialization.serialization(Base64.decode64(bjond_registration.encryption_key), header, payload)
15
+ end
16
+
17
+ def jwt_decode_payload_and_return_json(token, bjond_registration)
18
+ claims_json = SyrupPay::CompactDeserialization.deserialization(Base64.decode64(bjond_registration.encryption_key), token)
19
+ claims = JSON.parse(claims_json)
20
+ return JSON.parse(claims['json'][0])
21
+ end
22
+ end
metadata CHANGED
@@ -1,101 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bjond-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Rego
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-29 00:00:00.000000000 Z
11
+ date: 2016-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 4.2.4
20
- - - "~>"
20
+ - - ~>
21
21
  - !ruby/object:Gem::Version
22
22
  version: '4.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
27
+ - - '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: 4.2.4
30
- - - "~>"
30
+ - - ~>
31
31
  - !ruby/object:Gem::Version
32
32
  version: '4.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: jeweler
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
37
+ - - '>='
38
38
  - !ruby/object:Gem::Version
39
39
  version: 2.0.1
40
- - - "~>"
40
+ - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: '2.0'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
47
+ - - '>='
48
48
  - !ruby/object:Gem::Version
49
49
  version: 2.0.1
50
- - - "~>"
50
+ - - ~>
51
51
  - !ruby/object:Gem::Version
52
52
  version: '2.0'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: faraday
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - "~>"
57
+ - - ~>
58
58
  - !ruby/object:Gem::Version
59
59
  version: 0.9.2
60
60
  type: :runtime
61
61
  prerelease: false
62
62
  version_requirements: !ruby/object:Gem::Requirement
63
63
  requirements:
64
- - - "~>"
64
+ - - ~>
65
65
  - !ruby/object:Gem::Version
66
66
  version: 0.9.2
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: syruppay_jose
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
- - - "~>"
71
+ - - ~>
72
72
  - !ruby/object:Gem::Version
73
73
  version: '1.0'
74
74
  type: :runtime
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
- - - "~>"
78
+ - - ~>
79
79
  - !ruby/object:Gem::Version
80
80
  version: '1.0'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: attr_encrypted
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - ">="
85
+ - - '>='
86
86
  - !ruby/object:Gem::Version
87
87
  version: 3.0.3
88
- - - "~>"
88
+ - - ~>
89
89
  - !ruby/object:Gem::Version
90
90
  version: '3.0'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: 3.0.3
98
- - - "~>"
98
+ - - ~>
99
99
  - !ruby/object:Gem::Version
100
100
  version: '3.0'
101
101
  description: Rails engine that provides communication between Bjönd Server Core and
@@ -122,7 +122,6 @@ files:
122
122
  - app/controllers/bjond_registrations_controller.rb
123
123
  - app/controllers/bjondservices_controller.rb
124
124
  - app/helpers/.keep
125
- - app/helpers/bjond_registrations_helper.rb
126
125
  - app/mailers/.keep
127
126
  - app/models/.keep
128
127
  - app/models/bjond_registration.rb
@@ -146,6 +145,7 @@ files:
146
145
  - db/migrate/20160727144938_add_host_and_ip_to_bjond_registrations.rb
147
146
  - db/migrate/20160727191615_create_bjond_services.rb
148
147
  - db/migrate/20160727194217_add_registration_id_to_bjond_service.rb
148
+ - db/migrate/20160801184749_rename_registration_idin_bjond_service_to_bjond_registration_id.rb
149
149
  - lib/bjond-api.rb
150
150
  - lib/bjond-app-config.rb
151
151
  - lib/bjond-app-definition.rb
@@ -153,6 +153,7 @@ files:
153
153
  - lib/bjond-consequence.rb
154
154
  - lib/bjond-event.rb
155
155
  - lib/bjond-field.rb
156
+ - lib/bjond-jwt.rb
156
157
  - lib/generators/initializer_generator.rb
157
158
  - lib/generators/templates/initializer.rb
158
159
  homepage: http://github.com/Bjond/bjond-integration-gem
@@ -165,17 +166,17 @@ require_paths:
165
166
  - lib
166
167
  required_ruby_version: !ruby/object:Gem::Requirement
167
168
  requirements:
168
- - - ">="
169
+ - - '>='
169
170
  - !ruby/object:Gem::Version
170
171
  version: '0'
171
172
  required_rubygems_version: !ruby/object:Gem::Requirement
172
173
  requirements:
173
- - - ">="
174
+ - - '>='
174
175
  - !ruby/object:Gem::Version
175
176
  version: '0'
176
177
  requirements: []
177
178
  rubyforge_project:
178
- rubygems_version: 2.4.8
179
+ rubygems_version: 2.0.14
179
180
  signing_key:
180
181
  specification_version: 4
181
182
  summary: Interface that facilitates communication with Bjönd servers.
@@ -1,2 +0,0 @@
1
- module BjondRegistrationsHelper
2
- end