Sha256: 7466f0091996a2315ef2de5e1ea4d7a91d6e1cce438663a9e81a1b2484fd5ac4

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

module FlexCommerceApi
  module JsonApiClientExtension
    class Requestor < ::JsonApiClient::Query::Requestor
      # expects a record
      def create(record)
        request(:post, klass.path(record.attributes, record), {
                         data: record.as_json_api
                     })
      end

      def update(record)
        request(:patch, resource_path(record.attributes, record), {
                          data: record.as_json_api
                      })
      end

      def get(params = {})
        path = resource_path(params)
        params.delete(klass.primary_key)
        request(:get, path, params)
      end

      def destroy(record)
        request(:delete, resource_path(record.attributes, record), {})
      end

      protected

      def resource_path(parameters, record = nil)
        if resource_id = parameters[klass.primary_key]
          File.join(klass.path(parameters, record), encoded(resource_id))
        else
          klass.path(parameters, record)
        end
      end

      def encoded(part)
        Addressable::URI.encode_component(part, Addressable::URI::CharacterClasses::UNRESERVED + "\\:")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
flex_commerce_api-0.8.3 lib/flex_commerce_api/json_api_client_extension/requestor.rb
flex_commerce_api-0.8.2 lib/flex_commerce_api/json_api_client_extension/requestor.rb
flex_commerce_api-0.8.1 lib/flex_commerce_api/json_api_client_extension/requestor.rb
flex_commerce_api-0.7 lib/flex_commerce_api/json_api_client_extension/requestor.rb
flex_commerce_api-0.6.57 lib/flex_commerce_api/json_api_client_extension/requestor.rb