bits_service_client 0.2.2.pre.3 → 0.2.2.pre.4

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: 24438351abfc5c8ce8c9022bf2fb9b8d08506057
4
- data.tar.gz: ba0a4f08f78a8eb0c3aeea205886aa3da1da8563
3
+ metadata.gz: 0afab030e8087f4633b60c3a2a9b425abec6fd75
4
+ data.tar.gz: 043730165351c7c7937a9dd995403157e16d8a52
5
5
  SHA512:
6
- metadata.gz: 034f70674f93c16ef5fa8b5230f1fdad06cc539940b65cd8c50cd765e7655e37bf11121067d91370805645a2ea6ef453d6e2e11bb70b158a3d263cbec93c009b
7
- data.tar.gz: ca5861d1afc2814da10ea289b8c2437a5b1f50b9703325d10611488fc8a881ece5991abbe7a008dbaa9a06c335f1b254264fdf56b0828b8939a36faffa8a0548
6
+ metadata.gz: 0d3139a75921c1a57c9205cca2f012f4d74006dad95cdbece06b60f7d6486459f00c647ee7288a894e99d218a2a8096d90f3fee77c88eb1cdfb9e58c6c148d50
7
+ data.tar.gz: f20904efc5f39267e1b402ac442e649eb1177d64e9f69f953e79ad7536dbc84543ac30e759d746249f087a7290fbbbf4abd2f3497eafa38f85b789ee35538108
data/.rubocop.yml ADDED
@@ -0,0 +1,159 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+ Include:
4
+ - '**/Gemfile'
5
+ - '**/Rakefile'
6
+ - '*.gemspec'
7
+ Exclude:
8
+ - vendor/**/*
9
+ - db/migrations/**/*
10
+
11
+ Lint/AmbiguousRegexpLiteral:
12
+ Enabled: false
13
+
14
+ Lint/HandleExceptions:
15
+ Enabled: true
16
+
17
+ Lint/UnusedBlockArgument:
18
+ Enabled: false
19
+
20
+ Lint/UnusedMethodArgument:
21
+ Enabled: false
22
+
23
+ Metrics/AbcSize:
24
+ Enabled: false
25
+
26
+ Metrics/ClassLength:
27
+ Enabled: false
28
+
29
+ Metrics/CyclomaticComplexity:
30
+ Max: 12
31
+
32
+ Metrics/LineLength:
33
+ Max: 180
34
+
35
+ Metrics/MethodLength:
36
+ Max: 60
37
+
38
+ Metrics/ModuleLength:
39
+ Enabled: false
40
+
41
+ Metrics/ParameterLists:
42
+ Enabled: false
43
+
44
+ Metrics/PerceivedComplexity:
45
+ Enabled: false
46
+
47
+ Performance/Casecmp:
48
+ Enabled: false
49
+
50
+ Performance/Sample:
51
+ Enabled: false
52
+
53
+ Style/Alias:
54
+ EnforcedStyle: prefer_alias_method
55
+
56
+ Style/AlignParameters:
57
+ Enabled: false
58
+
59
+ Style/BlockDelimiters:
60
+ Enabled: false
61
+
62
+ Style/BracesAroundHashParameters:
63
+ Enabled: false
64
+
65
+ Style/ClassAndModuleChildren:
66
+ Enabled: false
67
+
68
+ Style/ClosingParenthesisIndentation:
69
+ Enabled: false
70
+
71
+ Style/Documentation:
72
+ Enabled: false
73
+
74
+ Style/DotPosition:
75
+ EnforcedStyle: trailing
76
+
77
+ Style/DoubleNegation:
78
+ Enabled: false
79
+
80
+ Style/EachWithObject:
81
+ Enabled: false
82
+
83
+ Style/FormatString:
84
+ EnforcedStyle: sprintf
85
+
86
+ Style/GuardClause:
87
+ Enabled: false
88
+
89
+ Style/IfUnlessModifier:
90
+ Enabled: false
91
+
92
+ Style/IndentArray:
93
+ EnforcedStyle: consistent
94
+
95
+ Style/IndentHash:
96
+ Enabled: false
97
+
98
+ Style/Lambda:
99
+ Enabled: false
100
+
101
+ Style/MultilineBlockChain:
102
+ Enabled: false
103
+
104
+ Style/MultilineBlockLayout:
105
+ Enabled: false
106
+
107
+ Style/MultilineOperationIndentation:
108
+ Enabled: false
109
+
110
+ Style/NegatedIf:
111
+ Enabled: false
112
+
113
+ Style/Next:
114
+ Enabled: false
115
+
116
+ Style/NumericLiterals:
117
+ Enabled: false
118
+
119
+ Style/PredicateName:
120
+ Enabled: false
121
+
122
+ Style/RaiseArgs:
123
+ EnforcedStyle: compact
124
+
125
+ Style/RedundantSelf:
126
+ Enabled: false
127
+
128
+ Style/RescueModifier:
129
+ Enabled: false
130
+
131
+ Style/SignalException:
132
+ Enabled: false
133
+
134
+ Style/SingleLineBlockParams:
135
+ Enabled: false
136
+
137
+ Style/SpaceAroundEqualsInParameterDefault:
138
+ EnforcedStyle: no_space
139
+
140
+ Style/StructInheritance:
141
+ Enabled: false
142
+
143
+ Style/TrailingCommaInArguments:
144
+ Enabled: false
145
+
146
+ Style/TrailingCommaInLiteral:
147
+ Enabled: false
148
+
149
+ Style/TrailingUnderscoreVariable:
150
+ Enabled: false
151
+
152
+ Style/TrivialAccessors:
153
+ Enabled: false
154
+
155
+ Style/WordArray:
156
+ Enabled: false
157
+
158
+ Style/ZeroLengthPredicate:
159
+ Enabled: false
data/Gemfile CHANGED
@@ -1,2 +1,3 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
  gemspec
data/Guardfile CHANGED
@@ -16,3 +16,8 @@ guard :rspec, cmd: 'bundle exec rspec' do
16
16
  watch(%r{^lib/bits_service_client/client.rb$}){|m| "spec/unit/bits_service_client/bits_service_client_spec.rb"}
17
17
  watch('spec/spec_helper.rb') { 'spec' }
18
18
  end
19
+
20
+ guard :rubocop do
21
+ watch(%r{.+\.rb$})
22
+ watch(%r{(?:.+/)?\.rubocop\.yml$}) { |m| File.dirname(m[0]) }
23
+ end
data/README.md CHANGED
@@ -4,9 +4,24 @@ Ruby client for [bits-service](https://github.com/cloudfoundry-incubator/bits-se
4
4
 
5
5
  # Changelog
6
6
 
7
+ * 0.2.1:
8
+ - Update list of authors
9
+
7
10
  * 0.2.0:
8
11
  - Add `vcap_request_id` to `BitsService::Client` and `BitsService::ResourcePool`
9
12
  - Add `request_timeout_in_seconds` to `BitsService::ResourcePool`
10
13
  - Move unit tests from CloudController to this gem
11
14
 
12
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.
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  require 'bundler/gem_tasks'
2
3
  require 'rspec/core/rake_task'
4
+ require 'rubocop/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
7
+ RuboCop::RakeTask.new
5
8
 
6
- task :default => :spec
9
+ task default: ['rubocop:auto_correct', 'spec']
@@ -1,32 +1,36 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'bits_service_client/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "bits_service_client"
8
+ spec.name = 'bits_service_client'
8
9
  spec.version = BitsServiceClient::VERSION
9
10
  spec.authors = ['Rizwan Reza', 'Steffen Uhlig', 'Peter Goetz']
10
- spec.email = ["rizwanreza@gmail.com", 'steffen.uhlig@de.ibm.com', 'peter.gtz@gmail.com']
11
+ spec.email = ['rizwanreza@gmail.com', 'steffen.uhlig@de.ibm.com', 'peter.gtz@gmail.com']
11
12
 
12
- spec.summary = %q{Bits Services client for Cloud Foundry}
13
- spec.homepage = "http://github.com/cloudfoundry/bits_service_client"
13
+ spec.summary = 'Bits Services client for Cloud Foundry'
14
+ spec.homepage = 'https://github.com/cloudfoundry-incubator/bits-service-client'
14
15
 
15
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
- spec.require_paths = ["lib"]
17
+ spec.require_paths = ['lib']
17
18
 
18
- spec.add_dependency "steno"
19
- spec.add_dependency "activesupport"
19
+ spec.add_dependency 'steno'
20
+ spec.add_dependency 'activesupport'
20
21
 
21
- spec.add_development_dependency "bundler", "~> 1.11"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec", "~> 3.0"
24
- spec.add_development_dependency "webmock", '= 1.20.4'
25
- spec.add_development_dependency "multipart-post"
26
- spec.add_development_dependency "rack-test"
27
- spec.add_development_dependency "guard"
28
- spec.add_development_dependency "guard-bundler"
29
- spec.add_development_dependency "guard-rspec"
22
+ spec.add_development_dependency 'bundler', '~> 1.11'
23
+ spec.add_development_dependency 'rake', '~> 10.0'
24
+ spec.add_development_dependency 'rspec', '~> 3.0'
25
+ spec.add_development_dependency 'webmock', '= 1.20.4'
26
+ spec.add_development_dependency 'multipart-post'
27
+ spec.add_development_dependency 'rack-test'
28
+ spec.add_development_dependency 'guard'
29
+ spec.add_development_dependency 'guard-bundler'
30
+ spec.add_development_dependency 'guard-rspec'
30
31
  spec.add_development_dependency 'terminal-notifier-guard'
31
32
  spec.add_development_dependency 'terminal-notifier'
33
+ spec.add_development_dependency 'rb-readline'
34
+ spec.add_development_dependency 'rubocop'
35
+ spec.add_development_dependency 'guard-rubocop'
32
36
  end
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
1
2
  module BitsService
2
3
  class Blob
3
- attr_reader :guid, :public_download_url, :internal_download_url
4
+ attr_reader :guid, :public_download_url, :internal_download_url, :public_upload_url
4
5
 
5
- def initialize(guid:, public_download_url:, internal_download_url:)
6
+ def initialize(guid:, public_download_url:, internal_download_url:, public_upload_url:)
6
7
  @guid = guid
7
8
  @public_download_url = public_download_url
8
9
  @internal_download_url = internal_download_url
10
+ @public_upload_url = public_upload_url
9
11
  end
10
12
 
11
13
  def attributes(*_)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'active_support/inflector'
2
3
  require 'bits_service_client/logging_http_client'
3
4
 
@@ -44,6 +45,11 @@ module BitsService
44
45
  FileUtils.mkdir_p(File.dirname(destination_path))
45
46
  File.open(destination_path, 'wb') do |file|
46
47
  response = @private_http_client.get(resource_path(source_key), @vcap_request_id)
48
+
49
+ if response.code == '302'
50
+ response = Net::HTTP.get_response(URI(response['location']))
51
+ end
52
+
47
53
  validate_response_code!(200, response)
48
54
  file.write(response.body)
49
55
  file.chmod(mode) if mode
@@ -66,20 +72,31 @@ module BitsService
66
72
  end
67
73
 
68
74
  def blob(key)
69
- response = @private_http_client.get('/sign' + resource_path(key), @vcap_request_id, {username: @username, password: @password})
70
- validate_response_code!([200, 302], response)
71
-
72
- response.tap do |response|
73
- response.body = response['location'] if response.code.to_i == 302
74
- end
75
-
76
75
  Blob.new(
77
76
  guid: key,
78
- public_download_url: response.body,
77
+ public_download_url: signed_url(key),
78
+ public_upload_url: signed_url(key, verb: 'put'),
79
79
  internal_download_url: generate_private_url(key)
80
80
  )
81
81
  end
82
82
 
83
+ def signed_url(key, verb: nil)
84
+ query = if verb.nil?
85
+ ''
86
+ else
87
+ "?verb=#{verb}"
88
+ end
89
+
90
+ response = @private_http_client.get("/sign#{resource_path(key)}#{query}", @vcap_request_id, { username: @username, password: @password })
91
+ validate_response_code!([200, 302], response)
92
+
93
+ response.tap do |result|
94
+ result.body = result['location'] if result.code.to_i == 302
95
+ end
96
+
97
+ response.body
98
+ end
99
+
83
100
  def delete_blob(blob)
84
101
  delete(blob.guid)
85
102
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module BitsService
2
3
  module Errors
3
4
  class Error < StandardError; end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module BitsService
2
3
  class LoggingHttpClient
3
4
  def initialize(http_client)
@@ -40,6 +41,5 @@ module BitsService
40
41
  @logger.info('Response', { code: response.code, vcap_request_id: vcap_request_id })
41
42
  end
42
43
  end
43
-
44
44
  end
45
45
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module BitsService
2
3
  class ResourcePool
3
4
  def initialize(endpoint:, request_timeout_in_seconds:, vcap_request_id: '')
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module BitsServiceClient
2
- VERSION = '0.2.2.pre.3'
3
+ VERSION = '0.2.2.pre.4'
3
4
  end
@@ -1,11 +1,12 @@
1
+ # frozen_string_literal: true
1
2
  require 'json'
2
3
  require 'net/http/post/multipart'
3
4
 
4
- require "bits_service_client/version"
5
- require "bits_service_client/blob"
6
- require "bits_service_client/errors"
7
- require "bits_service_client/client"
8
- require "bits_service_client/resource_pool"
5
+ require 'bits_service_client/version'
6
+ require 'bits_service_client/blob'
7
+ require 'bits_service_client/errors'
8
+ require 'bits_service_client/client'
9
+ require 'bits_service_client/resource_pool'
9
10
 
10
11
  module BitsService
11
12
  BlobstoreError = Class.new(StandardError)
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: 0.2.2.pre.3
4
+ version: 0.2.2.pre.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rizwan Reza
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-11-21 00:00:00.000000000 Z
13
+ date: 2016-12-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: steno
@@ -194,6 +194,48 @@ dependencies:
194
194
  - - ">="
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: rb-readline
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: rubocop
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :development
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: guard-rubocop
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
197
239
  description:
198
240
  email:
199
241
  - rizwanreza@gmail.com
@@ -205,6 +247,7 @@ extra_rdoc_files: []
205
247
  files:
206
248
  - ".gitignore"
207
249
  - ".rspec"
250
+ - ".rubocop.yml"
208
251
  - Gemfile
209
252
  - Guardfile
210
253
  - README.md
@@ -217,7 +260,7 @@ files:
217
260
  - lib/bits_service_client/logging_http_client.rb
218
261
  - lib/bits_service_client/resource_pool.rb
219
262
  - lib/bits_service_client/version.rb
220
- homepage: http://github.com/cloudfoundry/bits_service_client
263
+ homepage: https://github.com/cloudfoundry-incubator/bits-service-client
221
264
  licenses: []
222
265
  metadata: {}
223
266
  post_install_message: