bits_service_client 4.0.0.pre.2 → 4.0.0.pre.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: b3e14006a7591b74626b0d7aae5f94271f4eba05
4
- data.tar.gz: 3854d5007fc1c65ccc4a5c0b606305d52423f50f
3
+ metadata.gz: 7989da9bc76b9cbec050ebdfd1f1b332968ca6e2
4
+ data.tar.gz: 623775e563a40638d38b70ea929666c4880d239a
5
5
  SHA512:
6
- metadata.gz: f49af55aeb784e73e317358225f25359ab44c4af38d8e3497328729f2d9e9f9d6317f36617fff375ce571496dbf3372c998cb37dc1204f93054ba4aa4cab5993
7
- data.tar.gz: 7cf1eb8b1a977db52fb6fa9f21f10e0a10f8b290f34b2c9d9917291c5a523904475ed0aafc894815ca4a9eba6c2350a5782f75feef020df45e983c5fbd9d0fbf
6
+ metadata.gz: 2d0c573d721010471df62ad63a6b839cc7148c7fa2d202425cf6c7944fabbad6265a3d7069abd9d36a26311336238e9605601829f4e0aebaa9ab760f0a24489d
7
+ data.tar.gz: ab24fc0808182958a4ad45622c711ee1fb1a1aca5b1d2808699f3b1be41b6d65a7f2f1e9398a714da642159f11fa4fd57b8b84ae2567bc744e59218bd01eb57a
data/README.md CHANGED
@@ -1,27 +1,3 @@
1
1
  # Bits-Service Client
2
2
 
3
3
  Ruby client for [bits-service](https://github.com/cloudfoundry-incubator/bits-service).
4
-
5
- # Changelog
6
-
7
- * 0.2.1:
8
- - Update list of authors
9
-
10
- * 0.2.0:
11
- - Add `vcap_request_id` to `BitsService::Client` and `BitsService::ResourcePool`
12
- - Add `request_timeout_in_seconds` to `BitsService::ResourcePool`
13
- - Move unit tests from CloudController to this gem
14
-
15
- * 0.1.0: Initial version
16
-
17
- # Bump
18
-
19
- The gem is automatically built and published to [rubygems.org](https://rubygems.org/gems/bits_service_client) in the [flintstone](https://flintstone.ci.cf-app.com) CI pipeline.
20
-
21
- In order to release a new version of the gem, the following steps should be taken:
22
-
23
- 1. Update the change log above
24
- 1. Update [`version.rb`](lib/bits_service_client/version.rb) with the new version
25
- 1. Check in the changes and push them to `origin`.
26
-
27
- The pipeline will pick up the changes and will, if `version.rb` has changed, tag the release in git and publish the new version of the gem.
@@ -7,7 +7,7 @@ require 'bits_service_client/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'bits_service_client'
9
9
  spec.version = BitsServiceClient::VERSION
10
- spec.authors = ['Rizwan Reza', 'Steffen Uhlig', 'Peter Goetz', 'Norman Sutorius','Tobias Zipfel']
10
+ spec.authors = ['Rizwan Reza', 'Steffen Uhlig', 'Peter Goetz', 'Norman Sutorius', 'Tobias Zipfel']
11
11
  spec.email = ['rizwanreza@gmail.com', 'steffen.uhlig@de.ibm.com', 'peter.gtz@gmail.com', 'norman.sutorius@de.ibm.com', 'tobias.zipfel@gmail.com']
12
12
 
13
13
  spec.summary = 'Bits Services client for Cloud Foundry'
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'util/signature_util'
3
4
 
4
5
  module BitsService
5
6
  class Blob
6
-
7
7
  include BitsService::SignatureUtil
8
8
 
9
9
  attr_reader :key
@@ -28,7 +28,7 @@ module BitsService
28
28
  end
29
29
 
30
30
  def public_download_url
31
- signed_url = "#{@public_endpoint}#{self.sign_signature(resource_path(key), @signing_key_secret, @signing_key_id)}"
31
+ signed_url = "#{@public_endpoint}#{self.sign_signature('HEAD', resource_path(key), @signing_key_secret, @signing_key_id)}"
32
32
 
33
33
  response = @private_http_client.head(signed_url, @vcap_request_id)
34
34
  validate_response_code!([200, 302], response)
@@ -41,7 +41,7 @@ module BitsService
41
41
  end
42
42
 
43
43
  def public_upload_url
44
- "#{@public_endpoint}#{self.sign_signature(resource_path(key), @signing_key_secret, @signing_key_id)}&async=true&verb=put"
44
+ "#{@public_endpoint}#{self.sign_signature('PUT',resource_path(key), @signing_key_secret, @signing_key_id)}&async=true&verb=put"
45
45
  end
46
46
 
47
47
  def internal_download_url
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'util/signature_util'
3
4
 
4
5
  module BitsService
5
6
  class ResourcePool
6
-
7
7
  include BitsService::SignatureUtil
8
8
 
9
9
  def initialize(bits_service_options:, request_timeout_in_seconds:, vcap_request_id: '')
10
- @endpoint = URI.parse(bits_service_options[:private_endpoint])
11
- @public_endpoint = bits_service_options[:public_endpoint]
10
+ @private_endpoint = URI.parse(bits_service_options[:private_endpoint])
11
+ @public_endpoint = URI.parse(bits_service_options[:public_endpoint])
12
12
  @request_timeout_in_seconds = request_timeout_in_seconds
13
- @signed_key_secret = bits_service_options[:signing_key_secret]
14
- @signed_key_id = bits_service_options[:signing_key_id]
13
+ @signed_key_secret = validated(bits_service_options, :signing_key_secret)
14
+ @signed_key_id = validated(bits_service_options, :signing_key_id)
15
15
  @vcap_request_id = vcap_request_id
16
16
  @logger = Steno.logger('cc.bits_service_client')
17
17
  @ca_cert_path = bits_service_options[:ca_cert_path]
@@ -24,10 +24,7 @@ module BitsService
24
24
  end
25
25
 
26
26
  def signed_matches_url
27
- # "verb=post"
28
- signed_url = "#{@public_endpoint}#{self.sign_signature("/app_stash/matches", @signed_key_secret, @signed_key_id)}"
29
- @logger.debug("Created signed URL: #{signed_url}")
30
- return signed_url
27
+ "#{@public_endpoint}#{self.sign_signature('POST','/app_stash/matches', @signed_key_secret, @signed_key_id)}"
31
28
  end
32
29
 
33
30
  def bundles(resources_json, entries_path)
@@ -49,7 +46,7 @@ module BitsService
49
46
 
50
47
  private
51
48
 
52
- attr_reader :endpoint
49
+ attr_reader :private_endpoint
53
50
 
54
51
  def validate_response_code!(expected, response)
55
52
  return if expected.to_i == response.code.to_i
@@ -102,9 +99,9 @@ module BitsService
102
99
  end
103
100
 
104
101
  def http_client
105
- @http_client ||= Net::HTTP.new(endpoint.host, endpoint.port).tap do |c|
102
+ @http_client ||= Net::HTTP.new(private_endpoint.host, private_endpoint.port).tap do |c|
106
103
  c.read_timeout = @request_timeout_in_seconds
107
- enable_ssl(c, @ca_cert_path) if endpoint.scheme == 'https'
104
+ enable_ssl(c, @ca_cert_path) if private_endpoint.scheme == 'https'
108
105
  end
109
106
  end
110
107
 
@@ -118,5 +115,9 @@ module BitsService
118
115
  http_client.cert_store = cert_store
119
116
  end
120
117
 
118
+ def validated(bits_service_options, attribute)
119
+ raise ConfigurationError.new("Please provide #{attribute}") unless bits_service_options[attribute]
120
+ bits_service_options[attribute]
121
+ end
121
122
  end
122
123
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BitsServiceClient
4
- VERSION = '4.0.0.pre.2'
4
+ VERSION = '4.0.0.pre.3'
5
5
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BitsService
2
4
  module SignatureUtil
3
- def sign_signature(resource_path, key_secret, key_id)
5
+ def sign_signature(method, resource_path, key_secret, key_id)
4
6
  expires = seconds_since_the_unix_epoch_with_offset(3600)
5
- "#{resource_path}?"+
6
- "signature=#{OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, key_secret, "#{expires}#{resource_path} #{key_secret}")}&"+
7
- "expires=#{expires}&"+
7
+ "#{resource_path}?" \
8
+ "signature=#{OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, key_secret, "#{method.upcase} #{resource_path} #{key_secret} #{expires}")}&" \
9
+ "expires=#{expires}&" \
8
10
  "AccessKeyId=#{key_id}"
9
11
  end
10
12
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bits_service_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0.pre.2
4
+ version: 4.0.0.pre.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rizwan Reza
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2019-01-25 00:00:00.000000000 Z
15
+ date: 2019-01-31 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activesupport