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>)


64
65
66
# File 'lib/groupdocs/job.rb', line 64

def actions
  @actions
end

#documentsObject



70
71
72
# File 'lib/groupdocs/job.rb', line 70

def documents
  @documents
end

#email_resultsObject



66
67
68
# File 'lib/groupdocs/job.rb', line 66

def email_results
  @email_results
end

#idObject



62
63
64
# File 'lib/groupdocs/job.rb', line 62

def id
  @id
end

#requested_timeTime

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

Returns:

  • (Time)


72
73
74
# File 'lib/groupdocs/job.rb', line 72

def requested_time
  @requested_time
end

#statusSymbol

Converts status to human-readable format.

Returns:

  • (Symbol)


74
75
76
# File 'lib/groupdocs/job.rb', line 74

def status
  @status
end

#url_onlyObject



68
69
70
# File 'lib/groupdocs/job.rb', line 68

def url_only
  @url_only
end

Class Method Details

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

Returns array of recent 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:



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/groupdocs/job.rb', line 45

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])
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



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

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



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

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



205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/groupdocs/job.rb', line 205

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

#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:



125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/groupdocs/job.rb', line 125

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]
  json[:inputs].map do |document|
    document.merge!(file: GroupDocs::Storage::File.new(document))
    Document.new(document)
  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)


229
230
231
232
233
234
235
236
237
238
# File 'lib/groupdocs/job.rb', line 229

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