Sha256: ccf385a0baf58aaa9e0f7bd93fa38a7cf998d7be3322ecf1be23da1999afcda2

Contents?: true

Size: 1.69 KB

Versions: 7

Compression:

Stored size: 1.69 KB

Contents

module Reviewed
  class Request
    attr_accessor :client, :resource

    def initialize(opts={})
      @resource = opts[:resource]
      @scope = opts[:scope]
      @client = opts[:client] || Reviewed::Client.new
      @skip_cache = false
      @reset_cache = false
    end

    def path
      if @resource.respond_to? :to_path
        @resource.to_path(@scope)
      else
        @resource.to_s
      end
    end

    # Get request on resource#show
    def find(id, params={})
      url_path = [path, CGI::escape(id.to_s)]
      object_from_response(:get, url_path.join('/'), params)
    end

    # Get request on resource#index with query params
    def where(params={})
      collection_from_response(:get, path, params)
    end

    # Convenience Method
    def all
      where({})
    end

    def object_from_response(method, url, params={})
      response = client.send(method, url, params.merge(cache_control_params))
      resource.new(response.body)
    end

    def cached?
      !uncached?
    end

    def uncached?
      skip_cache? || reset_cache?
    end

    def with_no_cache
      @skip_cache = true
      self
    end

    def with_new_cache
      @reset_cache = true
      self
    end

    def collection_from_response(method, url, params={})
      response = client.send(method, url, params.merge(cache_control_params))
      Reviewed::Collection.new(client, resource, response, params)
    end

    def cache_control_params
      params = {}
      params.merge!({:"skip-cache" => true}) if skip_cache?
      params.merge!({:"reset-cache" => true}) if reset_cache?
      params
    end

    private

    def skip_cache?
      @skip_cache
    end

    def reset_cache?
      @reset_cache
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
reviewed-0.7.1 lib/reviewed/request.rb
reviewed-0.7 lib/reviewed/request.rb
reviewed-0.6.4 lib/reviewed/request.rb
reviewed-0.6.3 lib/reviewed/request.rb
reviewed-0.6.2 lib/reviewed/request.rb
reviewed-0.6.1 lib/reviewed/request.rb
reviewed-0.6.0 lib/reviewed/request.rb