bits_service_client 3.4.0 → 4.0.0.pre.1
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/.rubocop.yml +13 -10
- data/bits_service_client.gemspec +7 -7
- data/lib/bits_service_client.rb +1 -0
- data/lib/bits_service_client/blob.rb +14 -30
- data/lib/bits_service_client/client.rb +6 -3
- data/lib/bits_service_client/resource_pool.rb +15 -10
- data/lib/bits_service_client/version.rb +1 -1
- data/lib/util/signature_util.rb +18 -0
- metadata +40 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fd02832b61746287f81c5d06ef2002cb97fb33b
|
4
|
+
data.tar.gz: 80e5101938d38d36dbcc0e1f1ff54b36019eaf33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39246c058170ffbf73192359b7afa6d065cf109258d1bcf5dd65a40e95daca3388cb719d304f6bafd9ca7a1033fd94823e1352a7293034946eac89e18d766d2d
|
7
|
+
data.tar.gz: 033f7d52d78390765856053892bef6a369a56345600f4cbed9b61420e012359b0319bee5730ddeec50ee1e182d8b7be2b333f71a960cdbb226dbae33561d00d7
|
data/.rubocop.yml
CHANGED
@@ -53,7 +53,7 @@ Performance/Sample:
|
|
53
53
|
Style/Alias:
|
54
54
|
EnforcedStyle: prefer_alias_method
|
55
55
|
|
56
|
-
|
56
|
+
Layout/AlignParameters:
|
57
57
|
Enabled: false
|
58
58
|
|
59
59
|
Style/BlockDelimiters:
|
@@ -65,13 +65,13 @@ Style/BracesAroundHashParameters:
|
|
65
65
|
Style/ClassAndModuleChildren:
|
66
66
|
Enabled: false
|
67
67
|
|
68
|
-
|
68
|
+
Layout/ClosingParenthesisIndentation:
|
69
69
|
Enabled: false
|
70
70
|
|
71
71
|
Style/Documentation:
|
72
72
|
Enabled: false
|
73
73
|
|
74
|
-
|
74
|
+
Layout/DotPosition:
|
75
75
|
EnforcedStyle: trailing
|
76
76
|
|
77
77
|
Style/DoubleNegation:
|
@@ -89,10 +89,10 @@ Style/GuardClause:
|
|
89
89
|
Style/IfUnlessModifier:
|
90
90
|
Enabled: false
|
91
91
|
|
92
|
-
|
92
|
+
Layout/IndentArray:
|
93
93
|
EnforcedStyle: consistent
|
94
94
|
|
95
|
-
|
95
|
+
Layout/IndentHash:
|
96
96
|
Enabled: false
|
97
97
|
|
98
98
|
Style/Lambda:
|
@@ -101,10 +101,10 @@ Style/Lambda:
|
|
101
101
|
Style/MultilineBlockChain:
|
102
102
|
Enabled: false
|
103
103
|
|
104
|
-
|
104
|
+
Layout/MultilineBlockLayout:
|
105
105
|
Enabled: false
|
106
106
|
|
107
|
-
|
107
|
+
Layout/MultilineOperationIndentation:
|
108
108
|
Enabled: false
|
109
109
|
|
110
110
|
Style/NegatedIf:
|
@@ -116,7 +116,7 @@ Style/Next:
|
|
116
116
|
Style/NumericLiterals:
|
117
117
|
Enabled: false
|
118
118
|
|
119
|
-
|
119
|
+
Naming/PredicateName:
|
120
120
|
Enabled: false
|
121
121
|
|
122
122
|
Style/RaiseArgs:
|
@@ -134,7 +134,7 @@ Style/SignalException:
|
|
134
134
|
Style/SingleLineBlockParams:
|
135
135
|
Enabled: false
|
136
136
|
|
137
|
-
|
137
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
138
138
|
EnforcedStyle: no_space
|
139
139
|
|
140
140
|
Style/StructInheritance:
|
@@ -143,7 +143,10 @@ Style/StructInheritance:
|
|
143
143
|
Style/TrailingCommaInArguments:
|
144
144
|
Enabled: false
|
145
145
|
|
146
|
-
Style/
|
146
|
+
Style/TrailingCommaInArrayLiteral:
|
147
|
+
Enabled: false
|
148
|
+
|
149
|
+
Style/TrailingCommaInHashLiteral:
|
147
150
|
Enabled: false
|
148
151
|
|
149
152
|
Style/TrailingUnderscoreVariable:
|
data/bits_service_client.gemspec
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
lib = File.expand_path('
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
5
|
require 'bits_service_client/version'
|
6
6
|
|
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']
|
11
|
-
spec.email = ['rizwanreza@gmail.com', 'steffen.uhlig@de.ibm.com', 'peter.gtz@gmail.com', 'norman.sutorius@de.ibm.com']
|
10
|
+
spec.authors = ['Rizwan Reza', 'Steffen Uhlig', 'Peter Goetz', 'Norman Sutorius','Tobias Zipfel']
|
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'
|
14
14
|
spec.homepage = 'https://github.com/cloudfoundry-incubator/bits-service-client'
|
@@ -17,18 +17,18 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.require_paths = ['lib']
|
18
18
|
|
19
19
|
spec.add_dependency 'activesupport'
|
20
|
-
spec.add_dependency 'steno'
|
21
20
|
spec.add_dependency 'statsd-ruby', '~> 1.4.0'
|
21
|
+
spec.add_dependency 'steno'
|
22
22
|
|
23
23
|
spec.add_development_dependency 'bundler', '~> 1.11'
|
24
24
|
spec.add_development_dependency 'multipart-post'
|
25
|
+
spec.add_development_dependency 'pry'
|
26
|
+
spec.add_development_dependency 'pry-nav'
|
25
27
|
spec.add_development_dependency 'rack-test'
|
26
28
|
spec.add_development_dependency 'rake', '~> 10.0'
|
27
29
|
spec.add_development_dependency 'rb-readline'
|
28
30
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
31
|
spec.add_development_dependency 'rubocop'
|
30
|
-
spec.add_development_dependency 'webmock', '= 2.3.1'
|
31
32
|
spec.add_development_dependency 'sinatra'
|
32
|
-
spec.add_development_dependency '
|
33
|
-
spec.add_development_dependency 'pry-nav'
|
33
|
+
spec.add_development_dependency 'webmock', '= 2.3.1'
|
34
34
|
end
|
data/lib/bits_service_client.rb
CHANGED
@@ -1,17 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'util/signature_util'
|
2
3
|
|
3
4
|
module BitsService
|
4
5
|
class Blob
|
6
|
+
|
7
|
+
include BitsService::SignatureUtil
|
8
|
+
|
5
9
|
attr_reader :key
|
6
10
|
|
7
|
-
def initialize(key:, private_endpoint:, private_http_client:, vcap_request_id:,
|
11
|
+
def initialize(key:, private_endpoint:, private_http_client:, vcap_request_id:, resource_type:, public_endpoint:, signing_key_secret:, signing_key_id:)
|
8
12
|
@key = key
|
9
13
|
@private_http_client = private_http_client
|
10
14
|
@vcap_request_id = vcap_request_id
|
11
|
-
@username = username
|
12
|
-
@password = password
|
13
15
|
@resource_type = resource_type
|
14
16
|
@private_endpoint = private_endpoint
|
17
|
+
@public_endpoint = public_endpoint
|
18
|
+
@signing_key_secret = signing_key_secret
|
19
|
+
@signing_key_id = signing_key_id
|
15
20
|
end
|
16
21
|
|
17
22
|
def attributes(*_)
|
@@ -38,19 +43,14 @@ module BitsService
|
|
38
43
|
|
39
44
|
def signed_url(key, verb: nil)
|
40
45
|
query = if verb.nil?
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
response = @private_http_client.get("/sign#{resource_path(key)}#{query}", @vcap_request_id, { username: @username, password: @password })
|
47
|
-
validate_response_code!([200, 302], response)
|
48
|
-
|
49
|
-
response.tap do |result|
|
50
|
-
result.body = result['location'] if result.code.to_i == 302
|
46
|
+
''
|
47
|
+
else
|
48
|
+
"&verb=#{verb}"
|
51
49
|
end
|
52
50
|
|
53
|
-
|
51
|
+
signed_url = "#{@public_endpoint}#{self.sign_signature(resource_path(key), @signing_key_secret, @signing_key_id)}#{query}"
|
52
|
+
logger.debug( "Created signed URL: #{signed_url}")
|
53
|
+
return signed_url
|
54
54
|
end
|
55
55
|
|
56
56
|
def generate_private_url(key)
|
@@ -63,22 +63,6 @@ module BitsService
|
|
63
63
|
File.join(@private_endpoint.to_s, path)
|
64
64
|
end
|
65
65
|
|
66
|
-
# TODO: Refactor the following code to avoid duplicate methods with BitsService::Client
|
67
|
-
|
68
|
-
def validate_response_code!(expected_codes, response)
|
69
|
-
return if Array(expected_codes).include?(response.code.to_i)
|
70
|
-
|
71
|
-
error = {
|
72
|
-
response_code: response.code,
|
73
|
-
response_body: response.body,
|
74
|
-
response: response
|
75
|
-
}.to_json
|
76
|
-
|
77
|
-
logger.error("UnexpectedResponseCode: expected '#{expected_codes}' got #{response.code}")
|
78
|
-
|
79
|
-
fail BlobstoreError.new(error)
|
80
|
-
end
|
81
|
-
|
82
66
|
def resource_path(key)
|
83
67
|
prefix = @resource_type == :buildpack_cache ? 'buildpack_cache/entries/' : @resource_type
|
84
68
|
File.join('/', prefix.to_s, key.to_s)
|
@@ -15,6 +15,8 @@ module BitsService
|
|
15
15
|
@password = validated(bits_service_options, :password)
|
16
16
|
@private_endpoint = validated_http_url(bits_service_options, :private_endpoint)
|
17
17
|
@public_endpoint = validated_http_url(bits_service_options, :public_endpoint)
|
18
|
+
@signing_key_secret = validated(bits_service_options, :signing_key_secret)
|
19
|
+
@signing_key_id = validated(bits_service_options, :signing_key_id)
|
18
20
|
|
19
21
|
raise ResourceTypeNotPresent.new('Must specify resource type') unless resource_type
|
20
22
|
@resource_type = resource_type
|
@@ -107,9 +109,10 @@ module BitsService
|
|
107
109
|
private_http_client: @private_http_client,
|
108
110
|
private_endpoint: @private_endpoint,
|
109
111
|
vcap_request_id: @vcap_request_id,
|
110
|
-
|
111
|
-
|
112
|
-
|
112
|
+
resource_type: @resource_type,
|
113
|
+
public_endpoint: @public_endpoint,
|
114
|
+
signing_key_secret: @signing_key_secret,
|
115
|
+
signing_key_id: @signing_key_id,
|
113
116
|
)
|
114
117
|
end
|
115
118
|
|
@@ -1,15 +1,20 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
require 'util/signature_util'
|
2
3
|
|
3
4
|
module BitsService
|
4
5
|
class ResourcePool
|
5
|
-
|
6
|
-
|
6
|
+
|
7
|
+
include BitsService::SignatureUtil
|
8
|
+
|
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]
|
7
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]
|
8
15
|
@vcap_request_id = vcap_request_id
|
9
16
|
@logger = Steno.logger('cc.bits_service_client')
|
10
|
-
@ca_cert_path = ca_cert_path
|
11
|
-
@username = username
|
12
|
-
@password = password
|
17
|
+
@ca_cert_path = bits_service_options[:ca_cert_path]
|
13
18
|
end
|
14
19
|
|
15
20
|
def matches(resources_json)
|
@@ -19,11 +24,10 @@ module BitsService
|
|
19
24
|
end
|
20
25
|
|
21
26
|
def signed_matches_url
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
response.body
|
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
31
|
end
|
28
32
|
|
29
33
|
def bundles(resources_json, entries_path)
|
@@ -113,5 +117,6 @@ module BitsService
|
|
113
117
|
http_client.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
114
118
|
http_client.cert_store = cert_store
|
115
119
|
end
|
120
|
+
|
116
121
|
end
|
117
122
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module BitsService
|
2
|
+
module SignatureUtil
|
3
|
+
def sign_signature(resource_path, key_secret, key_id)
|
4
|
+
expires = seconds_since_the_unix_epoch_with_offset(3600)
|
5
|
+
signature_parts = "#{expires}#{resource_path}#{' '}#{key_secret}"
|
6
|
+
digest = OpenSSL::Digest::SHA256.new
|
7
|
+
hmac = OpenSSL::HMAC.new(key_secret, digest)
|
8
|
+
signature=OpenSSL::HMAC.hexdigest(digest, key_secret, signature_parts)
|
9
|
+
signed_path = "#{resource_path}?signature=#{signature}&expires=#{expires}&AccessKeyId=#{key_id}"
|
10
|
+
return signed_path
|
11
|
+
end
|
12
|
+
|
13
|
+
def seconds_since_the_unix_epoch_with_offset(offset)
|
14
|
+
t = Time.now.utc + offset
|
15
|
+
t.strftime('%s')
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bits_service_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rizwan Reza
|
8
8
|
- Steffen Uhlig
|
9
9
|
- Peter Goetz
|
10
10
|
- Norman Sutorius
|
11
|
+
- Tobias Zipfel
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date: 2019-01-
|
15
|
+
date: 2019-01-22 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: activesupport
|
@@ -28,33 +29,33 @@ dependencies:
|
|
28
29
|
- !ruby/object:Gem::Version
|
29
30
|
version: '0'
|
30
31
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
32
|
+
name: statsd-ruby
|
32
33
|
requirement: !ruby/object:Gem::Requirement
|
33
34
|
requirements:
|
34
|
-
- - "
|
35
|
+
- - "~>"
|
35
36
|
- !ruby/object:Gem::Version
|
36
|
-
version:
|
37
|
+
version: 1.4.0
|
37
38
|
type: :runtime
|
38
39
|
prerelease: false
|
39
40
|
version_requirements: !ruby/object:Gem::Requirement
|
40
41
|
requirements:
|
41
|
-
- - "
|
42
|
+
- - "~>"
|
42
43
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
44
|
+
version: 1.4.0
|
44
45
|
- !ruby/object:Gem::Dependency
|
45
|
-
name:
|
46
|
+
name: steno
|
46
47
|
requirement: !ruby/object:Gem::Requirement
|
47
48
|
requirements:
|
48
|
-
- - "
|
49
|
+
- - ">="
|
49
50
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
51
|
+
version: '0'
|
51
52
|
type: :runtime
|
52
53
|
prerelease: false
|
53
54
|
version_requirements: !ruby/object:Gem::Requirement
|
54
55
|
requirements:
|
55
|
-
- - "
|
56
|
+
- - ">="
|
56
57
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
58
|
+
version: '0'
|
58
59
|
- !ruby/object:Gem::Dependency
|
59
60
|
name: bundler
|
60
61
|
requirement: !ruby/object:Gem::Requirement
|
@@ -84,7 +85,7 @@ dependencies:
|
|
84
85
|
- !ruby/object:Gem::Version
|
85
86
|
version: '0'
|
86
87
|
- !ruby/object:Gem::Dependency
|
87
|
-
name:
|
88
|
+
name: pry
|
88
89
|
requirement: !ruby/object:Gem::Requirement
|
89
90
|
requirements:
|
90
91
|
- - ">="
|
@@ -98,21 +99,21 @@ dependencies:
|
|
98
99
|
- !ruby/object:Gem::Version
|
99
100
|
version: '0'
|
100
101
|
- !ruby/object:Gem::Dependency
|
101
|
-
name:
|
102
|
+
name: pry-nav
|
102
103
|
requirement: !ruby/object:Gem::Requirement
|
103
104
|
requirements:
|
104
|
-
- - "
|
105
|
+
- - ">="
|
105
106
|
- !ruby/object:Gem::Version
|
106
|
-
version: '
|
107
|
+
version: '0'
|
107
108
|
type: :development
|
108
109
|
prerelease: false
|
109
110
|
version_requirements: !ruby/object:Gem::Requirement
|
110
111
|
requirements:
|
111
|
-
- - "
|
112
|
+
- - ">="
|
112
113
|
- !ruby/object:Gem::Version
|
113
|
-
version: '
|
114
|
+
version: '0'
|
114
115
|
- !ruby/object:Gem::Dependency
|
115
|
-
name:
|
116
|
+
name: rack-test
|
116
117
|
requirement: !ruby/object:Gem::Requirement
|
117
118
|
requirements:
|
118
119
|
- - ">="
|
@@ -126,21 +127,21 @@ dependencies:
|
|
126
127
|
- !ruby/object:Gem::Version
|
127
128
|
version: '0'
|
128
129
|
- !ruby/object:Gem::Dependency
|
129
|
-
name:
|
130
|
+
name: rake
|
130
131
|
requirement: !ruby/object:Gem::Requirement
|
131
132
|
requirements:
|
132
133
|
- - "~>"
|
133
134
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
135
|
+
version: '10.0'
|
135
136
|
type: :development
|
136
137
|
prerelease: false
|
137
138
|
version_requirements: !ruby/object:Gem::Requirement
|
138
139
|
requirements:
|
139
140
|
- - "~>"
|
140
141
|
- !ruby/object:Gem::Version
|
141
|
-
version: '
|
142
|
+
version: '10.0'
|
142
143
|
- !ruby/object:Gem::Dependency
|
143
|
-
name:
|
144
|
+
name: rb-readline
|
144
145
|
requirement: !ruby/object:Gem::Requirement
|
145
146
|
requirements:
|
146
147
|
- - ">="
|
@@ -154,21 +155,21 @@ dependencies:
|
|
154
155
|
- !ruby/object:Gem::Version
|
155
156
|
version: '0'
|
156
157
|
- !ruby/object:Gem::Dependency
|
157
|
-
name:
|
158
|
+
name: rspec
|
158
159
|
requirement: !ruby/object:Gem::Requirement
|
159
160
|
requirements:
|
160
|
-
- -
|
161
|
+
- - "~>"
|
161
162
|
- !ruby/object:Gem::Version
|
162
|
-
version:
|
163
|
+
version: '3.0'
|
163
164
|
type: :development
|
164
165
|
prerelease: false
|
165
166
|
version_requirements: !ruby/object:Gem::Requirement
|
166
167
|
requirements:
|
167
|
-
- -
|
168
|
+
- - "~>"
|
168
169
|
- !ruby/object:Gem::Version
|
169
|
-
version:
|
170
|
+
version: '3.0'
|
170
171
|
- !ruby/object:Gem::Dependency
|
171
|
-
name:
|
172
|
+
name: rubocop
|
172
173
|
requirement: !ruby/object:Gem::Requirement
|
173
174
|
requirements:
|
174
175
|
- - ">="
|
@@ -182,7 +183,7 @@ dependencies:
|
|
182
183
|
- !ruby/object:Gem::Version
|
183
184
|
version: '0'
|
184
185
|
- !ruby/object:Gem::Dependency
|
185
|
-
name:
|
186
|
+
name: sinatra
|
186
187
|
requirement: !ruby/object:Gem::Requirement
|
187
188
|
requirements:
|
188
189
|
- - ">="
|
@@ -196,25 +197,26 @@ dependencies:
|
|
196
197
|
- !ruby/object:Gem::Version
|
197
198
|
version: '0'
|
198
199
|
- !ruby/object:Gem::Dependency
|
199
|
-
name:
|
200
|
+
name: webmock
|
200
201
|
requirement: !ruby/object:Gem::Requirement
|
201
202
|
requirements:
|
202
|
-
- -
|
203
|
+
- - '='
|
203
204
|
- !ruby/object:Gem::Version
|
204
|
-
version:
|
205
|
+
version: 2.3.1
|
205
206
|
type: :development
|
206
207
|
prerelease: false
|
207
208
|
version_requirements: !ruby/object:Gem::Requirement
|
208
209
|
requirements:
|
209
|
-
- -
|
210
|
+
- - '='
|
210
211
|
- !ruby/object:Gem::Version
|
211
|
-
version:
|
212
|
+
version: 2.3.1
|
212
213
|
description:
|
213
214
|
email:
|
214
215
|
- rizwanreza@gmail.com
|
215
216
|
- steffen.uhlig@de.ibm.com
|
216
217
|
- peter.gtz@gmail.com
|
217
218
|
- norman.sutorius@de.ibm.com
|
219
|
+
- tobias.zipfel@gmail.com
|
218
220
|
executables: []
|
219
221
|
extensions: []
|
220
222
|
extra_rdoc_files: []
|
@@ -237,6 +239,7 @@ files:
|
|
237
239
|
- lib/bits_service_client/logging_http_client.rb
|
238
240
|
- lib/bits_service_client/resource_pool.rb
|
239
241
|
- lib/bits_service_client/version.rb
|
242
|
+
- lib/util/signature_util.rb
|
240
243
|
homepage: https://github.com/cloudfoundry-incubator/bits-service-client
|
241
244
|
licenses: []
|
242
245
|
metadata: {}
|
@@ -251,9 +254,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
251
254
|
version: '0'
|
252
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
253
256
|
requirements:
|
254
|
-
- - "
|
257
|
+
- - ">"
|
255
258
|
- !ruby/object:Gem::Version
|
256
|
-
version:
|
259
|
+
version: 1.3.1
|
257
260
|
requirements: []
|
258
261
|
rubyforge_project:
|
259
262
|
rubygems_version: 2.6.14.3
|