Class: Cleversafe::Object

Inherits:
Object
  • Object
show all
Defined in:
lib/cleversafe/object.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(vault, key) ⇒ Object

Returns a new instance of Object.

Raises:

  • (ArgumentError)


9
10
11
12
13
14
# File 'lib/cleversafe/object.rb', line 9

def initialize(vault, key)
  raise ArgumentError, "key is required" unless key =~ /\S/
  @vault = vault
  @key = key
  @connection = vault.connection
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



7
8
9
# File 'lib/cleversafe/object.rb', line 7

def connection
  @connection
end

#keyObject (readonly)

Returns the value of attribute key.



7
8
9
# File 'lib/cleversafe/object.rb', line 7

def key
  @key
end

#vaultObject (readonly)

Returns the value of attribute vault.



7
8
9
# File 'lib/cleversafe/object.rb', line 7

def vault
  @vault
end

Instance Method Details

#data(options = {}) ⇒ Object



37
38
39
# File 'lib/cleversafe/object.rb', line 37

def data(options = {})
  open(options) { |io| io.read }
end

#deleteObject



24
25
26
27
28
# File 'lib/cleversafe/object.rb', line 24

def delete
  handle_errors do
    connection.delete(path)
  end
end

#etagObject



61
62
63
# File 'lib/cleversafe/object.rb', line 61

def etag
  [:etag]
end

#exists?Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
# File 'lib/cleversafe/object.rb', line 30

def exists?
  
  true
rescue Errors::NotFound
  false
end

#metadataObject



55
56
57
58
59
# File 'lib/cleversafe/object.rb', line 55

def 
  @metadata ||= handle_errors do
    connection.head(path).headers
  end
end

#open(options = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/cleversafe/object.rb', line 41

def open(options = {})
  handle_errors do
    response = connection.get(path, options.merge(:raw_response => true))
    begin
      file = response.file
      file.open
      file.binmode
      yield file
    ensure
      file.unlink
    end
  end
end

#pathObject



16
17
18
# File 'lib/cleversafe/object.rb', line 16

def path
  "#{vault.path}/#{CGI.escape(key)}"
end

#sizeObject



65
66
67
# File 'lib/cleversafe/object.rb', line 65

def size
  [:content_length].to_i
end

#urlObject



20
21
22
# File 'lib/cleversafe/object.rb', line 20

def url
  connection.url_for(path)
end