Sha256: f319c8d94a6d9db1d92760ee118b148a16f55f846c1ddbccdf9b29668fe02a97

Contents?: true

Size: 1.87 KB

Versions: 1

Compression:

Stored size: 1.87 KB

Contents

module Chargify
  class Metafield < Base
    def on_csv_export?
      scope.csv == "1" || scope.csv == true
    end

    def on_csv_export=(value)
      value = (value == true || value == '1') ? '1' : '0'
      scope.csv = value
    end

    def on_hosted_pages?
      scope.hosted.any?
    end

    def on_hosted_pages=(*products)
      scope.hosted = Array(products).flatten.map(&:to_s)
    end

    def on_hosted_pages
      scope.hosted
    end

    # Private Interface

    def self.resource;     "metafield";  end
    def self.element_name; "metafields"; end

    def self.instantiate_record(record, prefix_options = {})
      record = record.is_a?(Array) ? record.first : record
      new(record, true).tap do |resource|
        resource.prefix_options = prefix_options
        resource.current_name   = resource.name
      end
    end

    def self.instantiate_collection(collection, prefix_options = {})
      collection['metafields'].collect! { |record| instantiate_record(record, prefix_options) }
    end

    def load_attributes_from_response(response)
      if (response_code_allows_body?(response.code) &&
          (response['Content-Length'].nil? || response['Content-Length'] != "0") &&
          !response.body.nil? && response.body.strip.size > 0)
        attributes = self.class.format.decode(response.body)
        attributes = attributes.is_a?(Array) ? attributes.first : attributes

        resource = load(attributes, true)
        resource.current_name = resource.name
        @persisted = true
      end
    end

    def reload
      raise NotImplementedError, 'Metafields do not support loading of a single record'
    end

    def destroy
      connection.delete("#{element_path}?current_name=#{URI.encode(current_name)}")
    end

    def element_path(id = nil, prefix_options = {}, query_options = nil)
      "#{self.class.prefix}#{self.class.element_name}.xml"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chargify_api_ares-1.1.0.pre lib/chargify_api_ares/resources/metafield.rb