Class: Retab::Files

Inherits:
Object
  • Object
show all
Defined in:
lib/retab/files.rb

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Files

Returns a new instance of Files.



9
10
11
# File 'lib/retab/files.rb', line 9

def initialize(client)
  @client = client
end

Instance Method Details

#complete_upload(file_id:, sha_256: nil, request_options: {}) ⇒ Retab::MimeData

Complete Upload File

Parameters:

  • file_id (String)
  • sha_256 (String, nil) (defaults to: nil)

    Optional SHA-256 checksum

  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/retab/files.rb', line 132

def complete_upload(
  file_id:,
  sha_256: nil,
  request_options: {}
)
  body = {
    "sha256" => sha_256
  }.compact
  response = @client.request(
    method: :post,
    path: "/v1/files/upload/#{Retab::Util.encode_path(file_id)}/complete",
    auth: true,
    body: body,
    request_options: request_options
  )
  result = Retab::MimeData.new(response.body)
  result.last_response = Retab::Types::ApiResponse.new(
    http_status: response.code.to_i,
    http_headers: response.each_header.to_h,
    request_id: response["x-request-id"]
  )
  result
end

#create_upload(filename:, size_bytes:, content_type: nil, sha_256: nil, request_options: {}) ⇒ Retab::CreateUploadResponse

Upload File

Parameters:

  • filename (String)

    Filename to store

  • content_type (String, nil) (defaults to: nil)

    MIME type the client will upload

  • size_bytes (Integer)

    Expected upload size in bytes

  • sha_256 (String, nil) (defaults to: nil)

    Optional SHA-256 checksum

  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/retab/files.rb', line 98

def create_upload(
  filename:,
  size_bytes:,
  content_type: nil,
  sha_256: nil,
  request_options: {}
)
  body = {
    "filename" => filename,
    "content_type" => content_type,
    "size_bytes" => size_bytes,
    "sha256" => sha_256
  }.compact
  response = @client.request(
    method: :post,
    path: "/v1/files/upload",
    auth: true,
    body: body,
    request_options: request_options
  )
  result = Retab::CreateUploadResponse.new(response.body)
  result.last_response = Retab::Types::ApiResponse.new(
    http_status: response.code.to_i,
    http_headers: response.each_header.to_h,
    request_id: response["x-request-id"]
  )
  result
end

#get(file_id:, request_options: {}) ⇒ Retab::FileModel

Get File

Parameters:

  • file_id (String)
  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/retab/files.rb', line 160

def get(
  file_id:,
  request_options: {}
)
  response = @client.request(
    method: :get,
    path: "/v1/files/#{Retab::Util.encode_path(file_id)}",
    auth: true,
    request_options: request_options
  )
  result = Retab::FileModel.new(response.body)
  result.last_response = Retab::Types::ApiResponse.new(
    http_status: response.code.to_i,
    http_headers: response.each_header.to_h,
    request_id: response["x-request-id"]
  )
  result
end

Download Link

Parameters:

  • file_id (String)
  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/retab/files.rb', line 183

def get_download_link(
  file_id:,
  request_options: {}
)
  response = @client.request(
    method: :get,
    path: "/v1/files/#{Retab::Util.encode_path(file_id)}/download-link",
    auth: true,
    request_options: request_options
  )
  result = Retab::FileLink.new(response.body)
  result.last_response = Retab::Types::ApiResponse.new(
    http_status: response.code.to_i,
    http_headers: response.each_header.to_h,
    request_id: response["x-request-id"]
  )
  result
end

#list(before: nil, after: nil, limit: 10, order: "desc", filename: nil, mime_type: nil, from_date: nil, to_date: nil, include_embeddings: false, sort_by: "created_at", request_options: {}) ⇒ Retab::PaginatedList<Retab::FileModel>

List Files

Parameters:

  • before (String, nil) (defaults to: nil)
  • after (String, nil) (defaults to: nil)
  • limit (Integer, nil) (defaults to: 10)

    Items per page

  • order (Retab::Types::FilesOrder, nil) (defaults to: "desc")
  • filename (String, nil) (defaults to: nil)
  • mime_type (String, nil) (defaults to: nil)
  • from_date (String, nil) (defaults to: nil)
  • to_date (String, nil) (defaults to: nil)
  • include_embeddings (Boolean, nil) (defaults to: false)

    Include embeddings in the response

  • sort_by (String, nil) (defaults to: "created_at")
  • request_options (Hash) (defaults to: {})

    (see Retab::Types::RequestOptions)

Returns:



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/retab/files.rb', line 26

def list(
  before: nil,
  after: nil,
  limit: 10,
  order: "desc",
  filename: nil,
  mime_type: nil,
  from_date: nil,
  to_date: nil,
  include_embeddings: false,
  sort_by: "created_at",
  request_options: {}
)
  params = {
    "before" => before,
    "after" => after,
    "limit" => limit,
    "order" => order,
    "filename" => filename,
    "mime_type" => mime_type,
    "from_date" => from_date,
    "to_date" => to_date,
    "include_embeddings" => include_embeddings,
    "sort_by" => sort_by
  }.compact
  response = @client.request(
    method: :get,
    path: "/v1/files",
    auth: true,
    params: params,
    request_options: request_options
  )
  fetch_next = -> (cursor) {
    list(
      before: before,
      after: cursor,
      limit: limit,
      order: order,
      filename: filename,
      mime_type: mime_type,
      from_date: from_date,
      to_date: to_date,
      include_embeddings: include_embeddings,
      sort_by: sort_by,
      request_options: request_options
    )
  }
  Retab::PaginatedList.from_response(
    response,
    model: Retab::FileModel,
    filters: {
      before: before,
      limit: limit,
      order: order,
      filename: filename,
      mime_type: mime_type,
      from_date: from_date,
      to_date: to_date,
      include_embeddings: include_embeddings,
      sort_by: sort_by
    },
    fetch_next: fetch_next
  )
end