Sha256: d3eac7a76bddff60e7a45a630b98c38e720d412fc3c7f10d871476aa5c66aeda

Contents?: true

Size: 1.01 KB

Versions: 2

Compression:

Stored size: 1.01 KB

Contents

module Xeroizer
  class Connection
    attr_accessor :attributes
    attr_reader :parent

    class << self
      def current_connections(client)
        response = do_request(client)

        if response.success?
          JSON.parse(response.plain_body).map do |connection_json|
            build(connection_json, client)
          end
        else
          raise Xeroizer::OAuth::TokenInvalid, response.plain_body
        end
      end

      def build(attributes, parent)
        record = new(parent)
        record.attributes = attributes
        record
      end

      private

      def do_request(client)
        client.get('https://api.xero.com/connections')
      end
    end

    def initialize(parent)
      @parent = parent
      @attributes = {}
    end

    def method_missing(name, *_args)
      @attributes.send(:[], name.to_s.camelcase(:lower))
    end

    def delete
      parent.delete("https://api.xero.com/connections/#{id}")
    end

    def to_h
      attributes.transform_keys(&:underscore)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
xeroizer-3.0.1 lib/xeroizer/connection.rb
xeroizer-3.0.0 lib/xeroizer/connection.rb