Class: Bosh::Blobstore::DavBlobstoreClient
Constant Summary
Constants inherited
from Client
Client::PROVIDER_NAMES, Client::VERSION
Instance Method Summary
collapse
Methods inherited from BaseClient
#create, #delete, #exists?, #get
Methods inherited from Client
create, safe_create
Constructor Details
Returns a new instance of DavBlobstoreClient.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/blobstore_client/dav_blobstore_client.rb', line 11
def initialize(options)
super(options)
@client = HTTPClient.new
if @options[:ssl_no_verify]
@client.ssl_config.verify_mode = OpenSSL::SSL::VERIFY_NONE
@client.ssl_config.verify_callback = proc {}
end
@endpoint = @options[:endpoint]
@headers = {}
user = @options[:user]
password = @options[:password]
if user && password
@headers['Authorization'] = 'Basic ' +
Base64.strict_encode64("#{user}:#{password}").strip
end
end
|
Instance Method Details
#create_file(id, file) ⇒ Object
36
37
38
39
40
41
42
43
44
|
# File 'lib/blobstore_client/dav_blobstore_client.rb', line 36
def create_file(id, file)
id ||= generate_object_id
response = @client.put(url(id), file, @headers)
raise BlobstoreError, "Could not create object, #{response.status}/#{response.content}" if response.status != 201
id
end
|
#delete_object(id) ⇒ Object
54
55
56
57
58
59
|
# File 'lib/blobstore_client/dav_blobstore_client.rb', line 54
def delete_object(id)
response = @client.delete(url(id), header: @headers)
raise NotFound, "Object '#{id}' is not found, #{response.status}/#{response.content}" if response.status == 404
raise BlobstoreError, "Could not delete object, #{response.status}/#{response.content}" if response.status != 204
end
|
#get_file(id, file) ⇒ Object
46
47
48
49
50
51
52
|
# File 'lib/blobstore_client/dav_blobstore_client.rb', line 46
def get_file(id, file)
response = @client.get(url(id), {}, @headers) do |block|
file.write(block)
end
raise BlobstoreError, "Could not fetch object, #{response.status}/#{response.content}" if response.status != 200
end
|
#object_exists?(id) ⇒ Boolean
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/blobstore_client/dav_blobstore_client.rb', line 61
def object_exists?(id)
response = @client.head(url(id), header: @headers)
if response.status == 200
true
elsif response.status == 404
false
else
raise BlobstoreError, "Could not get object existence, #{response.status}/#{response.content}"
end
end
|
#url(id) ⇒ Object
30
31
32
33
34
|
# File 'lib/blobstore_client/dav_blobstore_client.rb', line 30
def url(id)
prefix = Digest::SHA1.hexdigest(id)[0, 2]
[@endpoint, prefix, id].compact.join('/')
end
|