Class: AtlasRb::Blob

Inherits:
Resource show all
Defined in:
lib/atlas_rb/blob.rb

Constant Summary collapse

ROUTE =
"/files/"

Class Method Summary collapse

Methods inherited from Resource

permissions, preview

Methods included from FaradayHelper

#connection, #multipart

Class Method Details

.content(id, &chunk_handler) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/atlas_rb/blob.rb', line 11

def self.content(id, &chunk_handler)
  headers = {}
  connection({}).get("#{ROUTE}#{id}/content") do |req|
    req.options.on_data = proc do |chunk, _bytes_received, env|
      headers = env.response_headers if headers.empty? && env
      chunk_handler.call(chunk)
    end
  end
  headers
end

.create(id, blob_path, original_filename) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/atlas_rb/blob.rb', line 22

def self.create(id, blob_path, original_filename)
  payload = { work_id: id,
              original_filename: original_filename,
              binary: Faraday::Multipart::FilePart.new(File.open(blob_path),
                                                      "application/octet-stream",
                                                      File.basename(blob_path)) }

  JSON.parse(multipart({}).post(ROUTE, payload)&.body)['blob']
end

.destroy(id) ⇒ Object



32
33
34
# File 'lib/atlas_rb/blob.rb', line 32

def self.destroy(id)
  connection({}).delete(ROUTE + id)
end

.find(id) ⇒ Object



7
8
9
# File 'lib/atlas_rb/blob.rb', line 7

def self.find(id)
  JSON.parse(connection({}).get(ROUTE + id)&.body)['blob']
end

.update(id, blob_path) ⇒ Object



36
37
38
39
40
41
# File 'lib/atlas_rb/blob.rb', line 36

def self.update(id, blob_path)
  payload = { binary: Faraday::Multipart::FilePart.new(File.open(blob_path),
                                                      "application/octet-stream",
                                                      File.basename(blob_path)) }
  JSON.parse(multipart({}).patch(ROUTE + id, payload)&.body)
end