Sha256: 28c5eb862baac0c4e656d32309e48087e64c87d35ef620e5dbdbd1bcc8960531

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

class Fastly
  # An invoice for a time period
  class Invoice < Base
    attr_accessor :service_id, :service_name, :start_time, :end_time, :total, :regions
    
    ## 
    # :attr: service_id
    # 
    # The id of the service this invoice is for
    # 

    ## 
    # :attr: service_name
    # 
    # The id of the service this invoice is for
    # 

    ## 
    # :attr: start_time
    # 
    # The earliest date and time this invoice covers
    # 

    ## 
    # :attr: end_time
    # 
    # The latest date and time this invoice covers
    # 

    ## 
    # :attr: total
    # 
    # The total for this invoice in US dollars
    # 

    ## 
    # :attr: regions
    # 
    # A hash reference with all the different regions and their subtotals
    
    private
    
    def self.get_path(*args)
      opts = args.size>0 ? args[0] : {}
      url  = "/billing"
      if opts.has_key?(:service_id)
        url += "/service/#{opts[:service_id]}"
      end
      if opts.has_key?(:year) && opts.has_key?(:month)
        url += "/year/#{opts[:year]}/month/#{opts[:month]}"
      end
      url
    end
    
    def self.list_path(*args)
      get_path(*args)
    end
    
    def self.post_path 
      raise "You can't POST to an invoice"
    end
    
    def self.put_path
      raise "You can't PUT to an invoice"
    end
    
    def self.delete_path
      raise "You can't DELETE to an invoice"
    end
    
    def save!
      raise "You can't save an invoice"
    end
    
    def delete!
      raise "You can't delete an invoice"
    end
  end
  

  # Return an array of Invoice objects representing invoices for all services.
  # 
  # If a year and month are passed in returns the invoices for that whole month. 
  # 
  # Otherwise it returns the invoices for the current month so far.
  def list_invoices(year=nil, month=nil)
    opts = {}
    unless year.nil? || month.nil?
      opts[:year]  = year
      opts[:month] = month
    end
    list(Fastly::Invoice, opts)
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fastly-0.9 lib/fastly/invoice.rb
fastly-0.5 lib/fastly/invoice.rb