micro_service-server 0.0.2 → 0.0.3
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 +4 -4
- data/.travis.yml +3 -1
- data/lib/micro_service/server.rb +4 -0
- data/lib/micro_service/server/class_methods.rb +25 -0
- data/lib/micro_service/server/exceptions.rb +9 -0
- data/lib/micro_service/server/instance_methods.rb +37 -0
- data/lib/micro_service/server/version.rb +1 -1
- data/micro_service-active_record-server.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7baaff946ba3205330c2e4f38eab72cf5cb1c15
|
4
|
+
data.tar.gz: 54bdb75b814866ae5fdcb0e0467094f0a88bdb88
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2332897964eb0bd99ee8674b2ca2cccb1d8b3f6cf98342f49de197473c496dbded57438ec193aeebb48596cb4563150a7afde9d0388bd0ce7ae02b444e20aa7c
|
7
|
+
data.tar.gz: 732f0516c1eca17de495827c0f7318ba8d72e2150c6ef5c6bc164d25e8e6e4f4df63be6a8540df4f16b29cf03a8b02105e05a840109ceaf062b8ca0fb6da4576
|
data/.travis.yml
CHANGED
data/lib/micro_service/server.rb
CHANGED
@@ -2,11 +2,15 @@ require "active_support"
|
|
2
2
|
require "active_support/dependencies"
|
3
3
|
require "active_record"
|
4
4
|
|
5
|
+
require "micro_service/signed_request/utils"
|
6
|
+
|
5
7
|
require "micro_service/server/version"
|
6
8
|
require "micro_service/server/compatibility"
|
7
9
|
require "micro_service/server/class_methods"
|
8
10
|
require "micro_service/server/instance_methods"
|
9
11
|
|
12
|
+
require "micro_service/server/exceptions"
|
13
|
+
|
10
14
|
module MicroService
|
11
15
|
class Server < ::ActiveRecord::Base
|
12
16
|
end
|
@@ -8,6 +8,31 @@ module MicroService
|
|
8
8
|
#base.serialize :config, Hash
|
9
9
|
#base.after_create :fetch_oauth_token
|
10
10
|
end
|
11
|
+
|
12
|
+
# Requests installation with a service
|
13
|
+
def install(server_install_url, client_install_url, client_uninstall_url = "")
|
14
|
+
require "open-uri"
|
15
|
+
require "net/http"
|
16
|
+
require "openssl"
|
17
|
+
|
18
|
+
uri = URI.parse(server_install_url.to_s)
|
19
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
20
|
+
http.use_ssl = true if uri.scheme == "https"
|
21
|
+
|
22
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
23
|
+
request["Content-Type"] = "application/json"
|
24
|
+
request.body = {
|
25
|
+
install_url: client_install_url,
|
26
|
+
uninstall_url: client_uninstall_url
|
27
|
+
}.to_json
|
28
|
+
|
29
|
+
response = http.request(request)
|
30
|
+
|
31
|
+
# Failed to register with external service
|
32
|
+
if !response.kind_of? Net::HTTPSuccess
|
33
|
+
raise ::MicroService::Server::InstallError
|
34
|
+
end
|
35
|
+
end
|
11
36
|
end
|
12
37
|
end
|
13
38
|
end
|
@@ -4,6 +4,43 @@ module MicroService
|
|
4
4
|
def self.included(base)
|
5
5
|
base.table_name = "micro_service_servers"
|
6
6
|
end
|
7
|
+
|
8
|
+
# Net::HTTP request instance able to communicate with the server described here
|
9
|
+
def signed_request(request)
|
10
|
+
require "open-uri"
|
11
|
+
require "net/http"
|
12
|
+
require "openssl"
|
13
|
+
|
14
|
+
uri = URI.parse(self.url.to_s)
|
15
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
16
|
+
http.use_ssl = true if uri.scheme == "https"
|
17
|
+
|
18
|
+
prefix = "MicroService"
|
19
|
+
|
20
|
+
yield http,request,prefix
|
21
|
+
|
22
|
+
# Populate with authorization header
|
23
|
+
request["Authorization"] = "#{prefix} #{self.send(:valid_authentication_header)}"
|
24
|
+
|
25
|
+
http.request(request)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
# Generates a valid authentication header for use in requests to this server
|
30
|
+
def valid_authentication_header
|
31
|
+
require "cgi"
|
32
|
+
|
33
|
+
algorithm = "sha256";
|
34
|
+
url = CGI.escape(self.url.to_s)
|
35
|
+
client_id = self.client_id
|
36
|
+
secret = self.secret
|
37
|
+
timestamp = (Time.now.to_i)*1000
|
38
|
+
str = "algorithm=HmacSHA256&client_id=#{client_id}&service_url=#{url}×tamp=#{timestamp}";
|
39
|
+
signature = ::MicroService::SignedRequest::Utils.sign(str, secret, algorithm)
|
40
|
+
|
41
|
+
# Header!
|
42
|
+
"#{str}&signature=#{CGI::escape(signature)}"
|
43
|
+
end
|
7
44
|
end
|
8
45
|
end
|
9
46
|
end
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "activerecord", [">= 3.0", "<= 5.0"]
|
22
|
+
spec.add_dependency "micro_service-signed_request-utils"
|
22
23
|
|
23
24
|
if RUBY_PLATFORM == 'java'
|
24
25
|
spec.add_development_dependency "jdbc-sqlite3", "> 0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: micro_service-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Butch Marshall
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -30,6 +30,20 @@ dependencies:
|
|
30
30
|
- - "<="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5.0'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: micro_service-signed_request-utils
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: sqlite3
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -165,6 +179,7 @@ files:
|
|
165
179
|
- lib/micro_service/server/class_methods.rb
|
166
180
|
- lib/micro_service/server/compatibility.rb
|
167
181
|
- lib/micro_service/server/configuration.rb
|
182
|
+
- lib/micro_service/server/exceptions.rb
|
168
183
|
- lib/micro_service/server/instance_methods.rb
|
169
184
|
- lib/micro_service/server/version.rb
|
170
185
|
- micro_service-active_record-server.gemspec
|