Class: CarrierWave::TrueVault::Client

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/carrierwave/truevault/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(api_key, api_version = 'v1') ⇒ Client

api_key should be a valid TrueVault API key account_id should be a valid TrueVault account ID api_version should be a valid API version (ex ‘v1’)



56
57
58
59
60
61
62
# File 'lib/carrierwave/truevault/client.rb', line 56

def initialize(api_key, api_version = 'v1')
  @api_key = api_key
  @api_ver = api_version
  instance_variables.each do |variable|
    raise ArgumentError, "#{variable} should not be nil or blank" if instance_variable_get(variable.to_sym).to_s == ""
  end
end

Instance Method Details

#create_blob(vault_id, file, options = {:headers => {"Content-Type"=>"application/octet-stream"}}) ⇒ Object

BLOB (binary file) API Methods



97
98
99
100
101
# File 'lib/carrierwave/truevault/client.rb', line 97

def create_blob(vault_id, file, options = {:headers => {"Content-Type"=>"application/octet-stream"}})
  options.merge!(default_options_to_merge_with)
  options[:body] = file.read
  self.class.post("/#{@api_ver}/vaults/#{vault_id}/blobs", options)
end

#create_document(vault_id, document_data, options = {}) ⇒ Object

vault_id should be a valid vault ID document_id should be a valid document ID document_data should be a Ruby Hash. Method will convert it to JSON and base64 encode as required



71
72
73
74
75
# File 'lib/carrierwave/truevault/client.rb', line 71

def create_document(vault_id, document_data, options = {})
  options.merge!(default_options_to_merge_with)
  options[:body] = {:document => hash_to_base64_json(document_data)}
  self.class.post("/#{@api_ver}/vaults/#{vault_id}/documents", options)
end

#default_options_to_merge_withObject



45
46
47
# File 'lib/carrierwave/truevault/client.rb', line 45

def default_options_to_merge_with
  {:basic_auth => {:username => @api_key, :password => nil}}
end

#delete_blob(vault_id, blob_id, options = {}) ⇒ Object



109
110
111
112
# File 'lib/carrierwave/truevault/client.rb', line 109

def delete_blob(vault_id, blob_id, options = {})
  options.merge!(default_options_to_merge_with)
  self.class.delete("/#{@api_ver}/vaults/#{vault_id}/blobs/#{blob_id}", options)
end

#delete_document(vault_id, document_id, options = {}) ⇒ Object



82
83
84
85
# File 'lib/carrierwave/truevault/client.rb', line 82

def delete_document(vault_id, document_id, options = {})
  options.merge!(default_options_to_merge_with)
  self.class.delete("/#{@api_ver}/vaults/#{vault_id}/documents/#{document_id}", options)
end

#get_blob(vault_id, blob_id, options = {}) ⇒ Object



114
115
116
117
# File 'lib/carrierwave/truevault/client.rb', line 114

def get_blob(vault_id, blob_id, options = {})
  options.merge!(default_options_to_merge_with)
  self.class.get("/#{@api_ver}/vaults/#{vault_id}/blobs/#{blob_id}", options)
end

#get_document(vault_id, document_id, options = {}) ⇒ Object



77
78
79
80
# File 'lib/carrierwave/truevault/client.rb', line 77

def get_document(vault_id, document_id, options = {})
  options.merge!(default_options_to_merge_with)
  self.class.get("/#{@api_ver}/vaults/#{vault_id}/documents/#{document_id}", options)
end

#hash_to_base64_json(hash = {}) ⇒ Object



49
50
51
# File 'lib/carrierwave/truevault/client.rb', line 49

def hash_to_base64_json(hash = {})
  Base64.encode64(hash.to_json)
end

#replace_blob(vault_id, blob_id, file, options = {:headers => {"Content-Type"=>"application/octet-stream"}}) ⇒ Object



103
104
105
106
107
# File 'lib/carrierwave/truevault/client.rb', line 103

def replace_blob(vault_id, blob_id, file, options = {:headers => {"Content-Type"=>"application/octet-stream"}})
  options.merge!(default_options_to_merge_with)
  options[:body] = file.read
  self.class.put("/#{@api_ver}/vaults/#{vault_id}/blobs/#{blob_id}", options)
end

#update_document(vault_id, document_id, document_data, options = {}) ⇒ Object



87
88
89
90
91
# File 'lib/carrierwave/truevault/client.rb', line 87

def update_document(vault_id, document_id, document_data, options = {})
  options.merge!(default_options_to_merge_with)
  options[:body] = {:document => hash_to_base64_json(document_data)}
  self.class.put("/#{@api_ver}/vaults/#{vault_id}/documents/#{document_id}", options)
end