Class: Pdfmonkey::Document

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/pdfmonkey/document.rb

Constant Summary collapse

ATTRIBUTES =
%i[
  app_id
  checksum
  created_at
  document_template_id
  download_url
  errors
  id
  meta
  payload
  preview_url
  status
  updated_at
].freeze
COMPLETE_STATUSES =
%w[error failure success].freeze
COLLECTION =
'documents'
MEMBER =
'document'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter: Pdfmonkey::Adapter.new, **attributes) ⇒ Document

Returns a new instance of Document.



53
54
55
56
57
# File 'lib/pdfmonkey/document.rb', line 53

def initialize(adapter: Pdfmonkey::Adapter.new, **attributes)
  @adapter = adapter
  @attributes = OpenStruct.new(ATTRIBUTES.zip([]).to_h)
  update(attributes)
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



30
31
32
# File 'lib/pdfmonkey/document.rb', line 30

def attributes
  @attributes
end

Class Method Details

.fetch(document_id) ⇒ Object



33
34
35
# File 'lib/pdfmonkey/document.rb', line 33

def self.fetch(document_id)
  new(id: document_id).reload!
end

.generate(template_id, payload, meta = {}) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/pdfmonkey/document.rb', line 43

def self.generate(template_id, payload, meta = {})
  document = new(
    document_template_id: template_id,
    meta: meta.to_json,
    payload: payload.to_json,
    status: 'pending')

  document.send(:save)
end

.generate!(document_template_id, payload, meta = {}) ⇒ Object



37
38
39
40
41
# File 'lib/pdfmonkey/document.rb', line 37

def self.generate!(document_template_id, payload, meta = {})
  document = generate(document_template_id, payload, meta)
  document.reload! until document.done?
  document
end

Instance Method Details

#done?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/pdfmonkey/document.rb', line 59

def done?
  COMPLETE_STATUSES.include?(status)
end

#reload!Object



63
64
65
66
67
# File 'lib/pdfmonkey/document.rb', line 63

def reload!
  attributes = adapter.call(:get, self)
  update(attributes)
  self
end

#to_jsonObject



69
70
71
72
73
74
# File 'lib/pdfmonkey/document.rb', line 69

def to_json
  attrs = attributes.to_h
  attrs.delete(:errors)

  { document: attrs }.to_json
end