class Dotloop::Document

Constants

DOTLOOP_FILE_UPLOAD_BOUNDARY

Attributes

client[RW]

Public Class Methods

new(client:) click to toggle source
# File lib/dotloop/document.rb, line 9
def initialize(client:)
  @client = client
end

Public Instance Methods

all(profile_id:, loop_id:, folder_id:) click to toggle source
# File lib/dotloop/document.rb, line 13
def all(profile_id:, loop_id:, folder_id:)
  @client.get("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/folder/#{folder_id.to_i}/document")[:data].map do |document_attrs|
    doc = Dotloop::Models::Document.new(document_attrs)
    doc.client = client
    doc.profile_id = profile_id.to_i
    doc.loop_id = loop_id.to_i
    doc.folder_id = folder_id.to_i
    doc
  end
end
find(profile_id:, loop_id:, folder_id:, document_id:) click to toggle source
# File lib/dotloop/document.rb, line 24
def find(profile_id:, loop_id:, folder_id:, document_id:)
  document_data = @client.get("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/folder/#{folder_id.to_i}/document/#{document_id.to_i}")[:data]
  document = Dotloop::Models::Document.new(document_data)
  document.client = client
  document.profile_id = profile_id.to_i
  document.loop_id = loop_id.to_i
  document.folder_id = folder_id.to_i
  document
end
get(profile_id:, loop_id:, folder_id:, document_id:) click to toggle source
# File lib/dotloop/document.rb, line 34
def get(profile_id:, loop_id:, folder_id:, document_id:)
  sio = StringIO.new
  sio.set_encoding(Encoding::ASCII_8BIT)
  sio.write(
    @client.download(
      "/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/folder/#{folder_id.to_i}/document/#{document_id.to_i}"
    )
  )
  sio.flush
  sio.close
  sio
end
upload(profile_id:, loop_id:, folder_id:, params: {}) click to toggle source
# File lib/dotloop/document.rb, line 47
def upload(profile_id:, loop_id:, folder_id:, params: {})
  file_name = params["file_name"]
  file_content = params["file_content"]
  raise 'Please pass file name' if (file_name.nil? || file_name.empty?)
  raise 'Please pass file content' if (file_content.nil? || file_content.empty?)
  post_body = []

  post_body << "--#{DOTLOOP_FILE_UPLOAD_BOUNDARY}\r\n"
  post_body << "Content-Disposition: form-data; name=\"file\"; filename=\"#{file_name}\"\r\n"
  post_body << "Content-Type: application/pdf\r\n"
  post_body << "\r\n"
  post_body << file_content
  post_body << "\r\n--#{DOTLOOP_FILE_UPLOAD_BOUNDARY}--\r\n"

  document_data = @client.upload("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/folder/#{folder_id.to_i}/document/", post_body.join)[:data]
  document = Dotloop::Models::Document.new(document_data)
  document.client = client
  document.profile_id = profile_id.to_i
  document.loop_id = loop_id.to_i
  document.folder_id = folder_id.to_i
  document
end