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 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