micro_service-server 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|