Sha256: 5ea6b22b1929e4bd62bc74249b070e48faacf6410c61e4f7140504ad658185ec

Contents?: true

Size: 1.44 KB

Versions: 29

Compression:

Stored size: 1.44 KB

Contents

require 'xeroizer/application_http_proxy' 
require 'xeroizer/report/base'
require 'xeroizer/report/aged_receivables_by_contact'

module Xeroizer
  module Report
    class Factory
      
      include ApplicationHttpProxy

      attr_reader :application
      attr_reader :report_type
      
      public
      
        def initialize(application, report_type)
          @application = application
          @report_type = report_type
        end
      
        # Retreive a report with the `options` as a hash containing
        # valid query-string parameters to pass to the API.
        def get(options = {})
          response_xml = options[:cache_file] ? File.read(options[:cache_file]) : http_get(options)          
          response = Response.parse(response_xml, options) do | response, elements |
            parse_reports(response, elements)
          end
          response.response_items.first # there is is only one
        end
      
        def api_controller_name
          "Reports/#{report_type}"
        end

        def klass
          begin
            @_klass_cache ||= Xeroizer::Report.const_get(report_type)
          rescue NameError => ex # use default class
            Base
          end
        end

      protected
              
        def parse_reports(response, elements)
          elements.each do | element |
            response.response_items << klass.build_from_node(element, self)
          end
        end
        
    end
  end
end

Version data entries

29 entries across 29 versions & 2 rubygems

Version Path
xeroizer-float-2.15.5.2 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.5.1 lib/xeroizer/report/factory.rb
xeroizer-2.15.5 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.16 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.15 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.14 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.13 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.12 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.11 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.10 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.9 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.8 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.7 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.6 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.5 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.4 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.3 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.2 lib/xeroizer/report/factory.rb
xeroizer-float-2.15.3.1 lib/xeroizer/report/factory.rb
xeroizer-2.15.3 lib/xeroizer/report/factory.rb