class Bosh::Blobstore::SimpleBlobstoreClient

Public Class Methods

new(options) click to toggle source
Calls superclass method Bosh::Blobstore::BaseClient::new
# File lib/blobstore_client/simple_blobstore_client.rb, line 8
def initialize(options)
  super(options)

  @client = HTTPClient.new
  @endpoint = @options[:endpoint]
  @bucket = @options[:bucket] || 'resources'
  @headers = {}

  user = @options[:user]
  password = @options[:password]

  if user && password
    @headers['Authorization'] = 'Basic ' +
      Base64.strict_encode64("#{user}:#{password}").strip
  end
end

Public Instance Methods

create_file(id, file) click to toggle source
# File lib/blobstore_client/simple_blobstore_client.rb, line 29
def create_file(id, file)
  response = @client.post(url(id), { content: file }, @headers)
  if response.status != 200
    raise BlobstoreError,
          "Could not create object, #{response.status}/#{response.content}"
  end
  response.content
end
delete_object(id) click to toggle source
# File lib/blobstore_client/simple_blobstore_client.rb, line 49
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) click to toggle source
# File lib/blobstore_client/simple_blobstore_client.rb, line 38
def get_file(id, file)
  response = @client.get(url(id), header: @headers) do |block|
    file.write(block)
  end

  if response.status != 200
    raise BlobstoreError,
          "Could not fetch object, #{response.status}/#{response.content}"
  end
end
object_exists?(id) click to toggle source
# File lib/blobstore_client/simple_blobstore_client.rb, line 56
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 = nil) click to toggle source
# File lib/blobstore_client/simple_blobstore_client.rb, line 25
def url(id = nil)
  ["#{@endpoint}/#{@bucket}", id].compact.join('/')
end