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
  filename
  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.



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

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.



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

def attributes
  @attributes
end

Class Method Details

.delete(document_id) ⇒ Object



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

def self.delete(document_id)
  new(id: document_id).delete!
end

.fetch(document_id) ⇒ Object



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

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

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



48
49
50
51
52
53
54
55
56
# File 'lib/pdfmonkey/document.rb', line 48

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



42
43
44
45
46
# File 'lib/pdfmonkey/document.rb', line 42

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

#delete!Object



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

def delete!
  adapter.call(:delete, self)
end

#done?Boolean

Returns:



68
69
70
# File 'lib/pdfmonkey/document.rb', line 68

def done?
  COMPLETE_STATUSES.include?(status)
end

#reload!Object



72
73
74
75
76
# File 'lib/pdfmonkey/document.rb', line 72

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

#to_jsonObject



78
79
80
81
82
83
# File 'lib/pdfmonkey/document.rb', line 78

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

  { document: attrs }.to_json
end