class Pdfmonkey::Document

Constants

ATTRIBUTES
COLLECTION
COMPLETE_STATUSES
MEMBER

Attributes

adapter[R]
attributes[R]

Public Class Methods

delete(document_id) click to toggle source
# File lib/pdfmonkey/document.rb, line 34
def self.delete(document_id)
  new(id: document_id).delete!
end
fetch(document_id) click to toggle source
# File lib/pdfmonkey/document.rb, line 38
def self.fetch(document_id)
  new(id: document_id).reload!
end
generate(template_id, payload, meta = {}) click to toggle source
# 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 = {}) click to toggle source
# 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
new(adapter: Pdfmonkey::Adapter.new, **attributes) click to toggle source
# 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

Public Instance Methods

delete!() click to toggle source
# File lib/pdfmonkey/document.rb, line 64
def delete!
  adapter.call(:delete, self)
end
done?() click to toggle source
# File lib/pdfmonkey/document.rb, line 68
def done?
  COMPLETE_STATUSES.include?(status)
end
reload!() click to toggle source
# File lib/pdfmonkey/document.rb, line 72
def reload!
  attributes = adapter.call(:get, self)
  update(attributes)
  self
end
to_json() click to toggle source
# File lib/pdfmonkey/document.rb, line 78
def to_json
  attrs = attributes.to_h
  attrs.delete(:errors)

  { document: attrs }.to_json
end

Private Instance Methods

save() click to toggle source
# File lib/pdfmonkey/document.rb, line 85
        def save
  attributes = adapter.call(:post, self)
  update(attributes)
  self
end
update(new_attributes) click to toggle source
# File lib/pdfmonkey/document.rb, line 91
        def update(new_attributes)
  new_attributes.each do |key, value|
    sym_key = key.to_sym
    attributes[sym_key] = value if ATTRIBUTES.include?(sym_key)
  end
end