Class: Vert::Clients::DocumentServiceClient

Inherits:
Object
  • Object
show all
Defined in:
lib/vert/clients/document_service_client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url: nil, timeout: 30) ⇒ DocumentServiceClient

Returns a new instance of DocumentServiceClient.



13
14
15
16
# File 'lib/vert/clients/document_service_client.rb', line 13

def initialize(base_url: nil, timeout: 30)
  @base_url = base_url || Vert.config.document_service_url
  @timeout = timeout
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



11
12
13
# File 'lib/vert/clients/document_service_client.rb', line 11

def base_url
  @base_url
end

#timeoutObject (readonly)

Returns the value of attribute timeout.



11
12
13
# File 'lib/vert/clients/document_service_client.rb', line 11

def timeout
  @timeout
end

Instance Method Details

#delete_object(object_id) ⇒ Object



58
59
60
61
62
63
# File 'lib/vert/clients/document_service_client.rb', line 58

def delete_object(object_id)
  uri = URI.parse("#{base_url}/api/v1/objects/#{object_id}")
  request = Net::HTTP::Delete.new(uri)
  add_auth_headers(request)
  execute_request(uri, request)
end

#download(object_id:) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/vert/clients/document_service_client.rb', line 43

def download(object_id:)
  result = download_url(object_id: object_id)
  return nil unless result[:success]
  url = result[:data][:url]
  response = Net::HTTP.get_response(URI.parse(url))
  response.body if response.is_a?(Net::HTTPSuccess)
end

#download_url(object_id:, disposition: "inline", expires_in: 3600) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/vert/clients/document_service_client.rb', line 35

def download_url(object_id:, disposition: "inline", expires_in: 3600)
  uri = URI.parse("#{base_url}/api/v1/objects/#{object_id}/download_url")
  uri.query = URI.encode_www_form(disposition: disposition, expires_in: expires_in)
  request = Net::HTTP::Get.new(uri)
  add_auth_headers(request)
  execute_request(uri, request)
end

#list_objects(resource: nil, page: 1, per_page: 20) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/vert/clients/document_service_client.rb', line 65

def list_objects(resource: nil, page: 1, per_page: 20)
  uri = URI.parse("#{base_url}/api/v1/objects")
  params = { page: page, per_page: per_page }
  params[:resource] = resource if resource
  uri.query = URI.encode_www_form(params)
  request = Net::HTTP::Get.new(uri)
  add_auth_headers(request)
  execute_request(uri, request)
end

#object(object_id) ⇒ Object



51
52
53
54
55
56
# File 'lib/vert/clients/document_service_client.rb', line 51

def object(object_id)
  uri = URI.parse("#{base_url}/api/v1/objects/#{object_id}")
  request = Net::HTTP::Get.new(uri)
  add_auth_headers(request)
  execute_request(uri, request)
end

#upload(resource:, filename:, content:, content_type:, metadata: {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/vert/clients/document_service_client.rb', line 18

def upload(resource:, filename:, content:, content_type:, metadata: {})
  uri = URI.parse("#{base_url}/api/v1/objects")
  request = Net::HTTP::Post.new(uri)
  request["Content-Type"] = "application/json"
  add_auth_headers(request)
  request.body = {
    object: {
      resource: resource,
      original_filename: filename,
      content_type: content_type,
      content_base64: Base64.strict_encode64(content.to_s),
      metadata: 
    }
  }.to_json
  execute_request(uri, request)
end