Class: GroupDocs::Job

Inherits:
Api::Entity show all
Extended by:
Api::Helpers::Actions
Includes:
Api::Helpers::Status
Defined in:
lib/groupdocs/job.rb

Constant Summary

Constants included from Api::Helpers::Actions

Api::Helpers::Actions::ACTIONS

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Api::Helpers::Actions

convert_actions_to_byte

Methods inherited from Api::Entity

#initialize, #inspect, #to_hash

Constructor Details

This class inherits a constructor from GroupDocs::Api::Entity

Instance Attribute Details

#actionsArray<Symbol>

Returns job actions in human-readable format.

Returns:

  • (Array<Symbol>)


89
90
91
# File 'lib/groupdocs/job.rb', line 89

def actions
  @actions
end

#documentsObject



95
96
97
# File 'lib/groupdocs/job.rb', line 95

def documents
  @documents
end

#email_resultsObject



91
92
93
# File 'lib/groupdocs/job.rb', line 91

def email_results
  @email_results
end

#guidObject



83
84
85
# File 'lib/groupdocs/job.rb', line 83

def guid
  @guid
end

#idObject



81
82
83
# File 'lib/groupdocs/job.rb', line 81

def id
  @id
end

#nameObject



85
86
87
# File 'lib/groupdocs/job.rb', line 85

def name
  @name
end

#priorityObject



87
88
89
# File 'lib/groupdocs/job.rb', line 87

def priority
  @priority
end

#requested_timeTime

Converts timestamp which is return by API server to Time object.

Returns:

  • (Time)


97
98
99
# File 'lib/groupdocs/job.rb', line 97

def requested_time
  @requested_time
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


99
100
101
# File 'lib/groupdocs/job.rb', line 99

def status
  @status
end

#url_onlyObject



93
94
95
# File 'lib/groupdocs/job.rb', line 93

def url_only
  @url_only
end

Class Method Details

.all!(options = {}, access = {}) ⇒ Array<GroupDocs::Job>

Returns array of jobs.

Parameters:

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

    Hash of options

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

    Access credentials

Options Hash (options):

  • :page (Integer)

    Page to start with

  • :count (Integer)

    How many items to list

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/groupdocs/job.rb', line 18

def self.all!(options = {}, access = {})
  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = '/async/{{client_id}}/jobs'
  end
  api.add_params(options)
  json = api.execute!

  json[:jobs].map do |job|
    Job.new(job)
  end
end

.create!(options, access = {}) ⇒ GroupDocs::Job

Creates new draft job.

Parameters:

  • options (Hash)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :actions (Integer)

    Array of actions to be performed. Required

  • :email_results (Boolean)
  • :out_formats (Array)
  • :url_only (Boolean)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/groupdocs/job.rb', line 64

def self.create!(options, access = {})
  options[:actions] or raise ArgumentError, 'options[:actions] is required.'
  options[:actions] = convert_actions_to_byte(options[:actions])
  options[:out_formats] = options[:out_formats].join(?;) if options[:out_formats]

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :POST
    request[:path] = '/async/{{client_id}}/jobs'
    request[:request_body] = options
  end
  json = api.execute!

  Job.new(id: json[:job_id], guid: json[:job_guid])
end

.get!(id, access = {}) ⇒ GroupDocs::Job

Returns job by its identifier.

Parameters:

  • id (Integer)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



41
42
43
44
45
46
47
48
49
# File 'lib/groupdocs/job.rb', line 41

def self.get!(id, access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/async/{{client_id}}/jobs/#{id}"
  end.execute!

  Job.new(json)
end

Instance Method Details

#add_datasource!(document, datasource, access = {}) ⇒ Object

Adds datasource to job document.

Parameters:

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Raises:

  • (ArgumentError)

    If document is not a GroupDocs::Document object

  • (ArgumentError)

    If datasource is not a GroupDocs::DataSource object



224
225
226
227
228
229
230
231
232
233
234
235
# File 'lib/groupdocs/job.rb', line 224

def add_datasource!(document, datasource, access = {})
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
    "Document should be GroupDocs::Document object. Received: #{document.inspect}"
  datasource.is_a?(GroupDocs::DataSource) or raise ArgumentError,
    "Datasource should be GroupDocs::DataSource object. Received: #{datasource.inspect}"

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/async/{{client_id}}/jobs/#{id}/files/#{document.file.guid}/datasources/#{datasource.id}"
  end.execute!
end

#add_document!(document, options = {}, access = {}) ⇒ Integer

Adds document to job.

Parameters:

  • document (GroupDocs::Document)
  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :output_formats (Array)

    Array of output formats to override

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Integer)

    Document ID

Raises:

  • (ArgumentError)

    If document is not a GroupDocs::Document object



181
182
183
184
185
186
187
188
189
190
191
192
193
194
# File 'lib/groupdocs/job.rb', line 181

def add_document!(document, options = {}, access = {})
  document.is_a?(GroupDocs::Document) or raise ArgumentError,
    "Document should be GroupDocs::Document object. Received: #{document.inspect}"

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/async/{{client_id}}/jobs/#{id}/files/#{document.file.guid}"
  end
  api.add_params(options)
  json = api.execute!

  json[:document_id]
end

#add_url!(url, options = {}, access = {}) ⇒ Integer

Adds URL of web page or document to be converted.

Parameters:

  • url (String)

    Absolute URL

  • options (Hash) (defaults to: {})
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :output_formats (Array)

    Array of output formats to override

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:

  • (Integer)

    Document ID



248
249
250
251
252
253
254
255
256
257
258
259
260
# File 'lib/groupdocs/job.rb', line 248

def add_url!(url, options = {}, access = {})
  options.merge!(absolute_url: url)

  api = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/async/{{client_id}}/jobs/#{id}/urls"
  end
  api.add_params(options)
  json = api.execute!

  json[:document_id]
end

#delete_document!(guid, access = {}) ⇒ Object

Deletes document with guid from job.

Parameters:

  • guid (String)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


204
205
206
207
208
209
210
# File 'lib/groupdocs/job.rb', line 204

def delete_document!(guid, access = {})
  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :DELETE
    request[:path] = "/async/{{client_id}}/jobs/#{id}/documents/#{guid}"
  end.execute!
end

#documents!(access = {}) ⇒ Array<GroupDocs::Document>

Returns an array of documents associated to job.

Parameters:

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

    Access credentials

Options Hash (access):

  • :client_id (String)
  • :private_key (String)

Returns:



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/groupdocs/job.rb', line 150

def documents!(access = {})
  json = Api::Request.new do |request|
    request[:access] = access
    request[:method] = :GET
    request[:path] = "/async/{{client_id}}/jobs/#{id}/documents"
  end.execute!

  self.status = json[:job_status]
  if json[:inputs]
    json[:inputs].map do |document|
      document.merge!(file: GroupDocs::Storage::File.new(document))
      Document.new(document)
    end
  else
    []
  end
end

#update!(options, access = {}) ⇒ Object

Updates job settings and/or status.

Parameters:

  • options (Hash)
  • access (Hash) (defaults to: {})

    Access credentials

Options Hash (options):

  • :email_results (Boolean)
  • :status (Symbol)

Options Hash (access):

  • :client_id (String)
  • :private_key (String)


272
273
274
275
276
277
278
279
280
281
# File 'lib/groupdocs/job.rb', line 272

def update!(options, access = {})
  options[:status] = parse_status(options[:status]) if options[:status]

  Api::Request.new do |request|
    request[:access] = access
    request[:method] = :PUT
    request[:path] = "/async/{{client_id}}/jobs/#{id}"
    request[:request_body] = options
  end.execute!
end