Class: Blobsterix::Storage::FileSystemMetaData

Inherits:
BlobMetaData
  • Object
show all
Includes:
Logable
Defined in:
lib/blobsterix/storage/file_system_meta_data.rb

Instance Method Summary collapse

Methods included from Logable

#logger, #logger=

Methods inherited from BlobMetaData

#read, #response, #valid?

Constructor Details

#initialize(path_, payload = {}) ⇒ FileSystemMetaData

Returns a new instance of FileSystemMetaData.



6
7
8
9
10
11
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 6

def initialize(path_, payload={})
  @payload=payload
  @path = path_
  @last_modified = ""
  load_meta_file
end

Instance Method Details

#accept_typeObject



65
66
67
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 65

def accept_type
  @accept_type ||= AcceptType.new(get_mime().to_s)
end

#as_jsonObject



102
103
104
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 102

def as_json
  {'mimetype' => mimetype, 'mediatype' => mediatype, 'etag' => etag, 'size' => size,'payload' => @payload.to_json}
end

#check(key) ⇒ Object



17
18
19
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 17

def check(key)
  @key === key
end

#dataObject



38
39
40
41
42
43
44
45
46
47
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 38

def data
  # begin
  #   raise StandardError.new
  # rescue StandardError => e
  #   puts "VERY EXPENSIVE FILE READ"
  #   puts e.backtrace
  # end
  # logger.info "VERY EXPENSIVE FILE READ"
  File.exists?(path) ? File.read(path) : ""
end

#deleteObject



93
94
95
96
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 93

def delete
  File.delete(meta_path) if File.exists?(meta_path)
  File.delete(path) if valid
end

#etagObject



21
22
23
24
25
26
27
28
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 21

def etag
  if @last_modified === last_modified
    @etag ||= Digest::MD5.hexdigest(data)
  else
    @last_modified = last_modified
    @etag = Digest::MD5.hexdigest(data)
  end
end

#headerObject



69
70
71
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 69

def header()
  {"Etag" => etag, "Content-Type" => mimetype, "Last-Modified" => last_modified.strftime("%Y-%m-%dT%H:%M:%S.000Z"), "Cache-Control" => "max-age=#{60*60*24}", "Expires" => (Time.new+(60*60*24)).strftime("%Y-%m-%dT%H:%M:%S.000Z")}
end

#last_accessedObject



61
62
63
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 61

def last_accessed
  File.atime(path)#.strftime("%Y-%m-%dT%H:%M:%S.000Z")
end

#last_modifiedObject



57
58
59
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 57

def last_modified
  File.ctime(path)#.strftime("%Y-%m-%dT%H:%M:%S.000Z")
end

#mediatypeObject



34
35
36
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 34

def mediatype
  (@mediatype ||= get_mime.mediatype)
end

#mimetypeObject



30
31
32
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 30

def mimetype
  (@mimetype ||= get_mime.type)
end

#pathObject



49
50
51
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 49

def path
  @path
end

#payloadObject



77
78
79
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 77

def payload
  @payload
end

#sizeObject



53
54
55
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 53

def size
  @size ||= File.exists?(path) ? File.size(path) : 0
end

#to_jsonObject



98
99
100
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 98

def to_json
  as_json.to_json
end

#to_sObject



13
14
15
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 13

def to_s
  @path
end

#validObject



73
74
75
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 73

def valid
  File.exists?(path)
end

#writeObject



81
82
83
84
85
86
87
88
89
90
91
# File 'lib/blobsterix/storage/file_system_meta_data.rb', line 81

def write
  if block_given?
    FileUtils.mkdir_p(File.dirname(path))
    delete
    f = File.open(path, "wb")
    yield f
    f.close
  end
  save_meta_file
  self
end