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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 93f20f1aa6430ee91041467fad2fb14fa97eddda
4
- data.tar.gz: 131529dd61110570b78b3e3a0e25fee1595c3d5c
3
+ metadata.gz: c7baaff946ba3205330c2e4f38eab72cf5cb1c15
4
+ data.tar.gz: 54bdb75b814866ae5fdcb0e0467094f0a88bdb88
5
5
  SHA512:
6
- metadata.gz: 64c78afda28db5094190cf0d7a6be454fafda2f751b12ab3d3a94d51e4624a8919aff15cc898a16dbe29e1b91643bfcf3be8a09fd6954060db4db6d4069a0b5d
7
- data.tar.gz: b8023259d34af01acc09ae1d1ca10ac45cb318ef0e0b7e9fa7cf27d7f4b4dff1abf0a2fcca55f8c8954ec04cdd3e2073da12610ca92774ec0e0600573a860b80
6
+ metadata.gz: 2332897964eb0bd99ee8674b2ca2cccb1d8b3f6cf98342f49de197473c496dbded57438ec193aeebb48596cb4563150a7afde9d0388bd0ce7ae02b444e20aa7c
7
+ data.tar.gz: 732f0516c1eca17de495827c0f7318ba8d72e2150c6ef5c6bc164d25e8e6e4f4df63be6a8540df4f16b29cf03a8b02105e05a840109ceaf062b8ca0fb6da4576
data/.travis.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.2.0
4
- before_install: gem install bundler -v 1.11.2
4
+ before_install:
5
+ - gem install activerecord
6
+ - gem install bundler -v 1.11.2
@@ -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
@@ -0,0 +1,9 @@
1
+ require "active_record"
2
+
3
+ module MicroService
4
+ class Server < ::ActiveRecord::Base
5
+ # Raise if failed contact server about installation
6
+ class InstallError < StandardError; end
7
+ end
8
+ end
9
+
@@ -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}&timestamp=#{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
@@ -2,6 +2,6 @@ require "active_record"
2
2
 
3
3
  module MicroService
4
4
  class Server < ::ActiveRecord::Base
5
- VERSION = "0.0.2"
5
+ VERSION = "0.0.3"
6
6
  end
7
7
  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.2
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-04-17 00:00:00.000000000 Z
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