class InvoiceMaker::Invoice
Constants
- JSON_CONTENT_TYPE
- PDF_CONTENT_TYPE
Attributes
data[R]
dest_dir[RW]
Public Class Methods
new()
click to toggle source
# File lib/invoice_maker/invoice.rb, line 9 def initialize @dest_dir = '/tmp' @data = Hash.new @base_uri = 'https://invoice-generator.com' end
Public Instance Methods
append_item(item)
click to toggle source
# File lib/invoice_maker/invoice.rb, line 24 def append_item(item) raise "Unable to add items to an empty invoice data. Did you 'set' first?" if @data.empty? @data['items'] = [] unless @data.has_key?('items') @data['items'].push item unless @data.empty? end
generate()
click to toggle source
Let's generate a pdf
# File lib/invoice_maker/invoice.rb, line 31 def generate response = HTTParty.post(@base_uri, body: @data.to_json, headers: { "Content-Type" => JSON_CONTENT_TYPE }) if response.success? && response.content_type == PDF_CONTENT_TYPE filename = File.join(@dest_dir, SecureRandom.urlsafe_base64(16)) + '.pdf' save_pdf(filename, response.parsed_response) else return nil end return filename end
set(options = {})
click to toggle source
set invoice data
# File lib/invoice_maker/invoice.rb, line 16 def set(options = {}) @data = options end
Private Instance Methods
save_pdf(filename, data)
click to toggle source
# File lib/invoice_maker/invoice.rb, line 44 def save_pdf(filename, data) File.open(filename, "wb+") do |f| f << data end end