Sha256: e9fb7fa1bf270f481b75c7b5ada5718b053cbccefa77b21780c5707e4f5fcda6

Contents?: true

Size: 1.75 KB

Versions: 126

Compression:

Stored size: 1.75 KB

Contents

module Flexirest
  module Mapping
    module ClassMethods
      def get(name, url, options = {})
        _map_call(name, url:url, method: :get, options:options)
      end

      def put(name, url, options = {})
        _map_call(name, url:url, method: :put, options:options)
      end

      def post(name, url, options = {})
        _map_call(name, url:url, method: :post, options:options)
      end

      def delete(name, url, options = {})
        _map_call(name, url:url, method: :delete, options:options)
      end

      def patch(name, url, options = {})
        _map_call(name, url:url, method: :patch, options:options)
      end

      def _map_call(name, details)
        _calls[name] = {name:name}.merge(details)
        _calls["lazy_#{name}".to_sym] = {name:name}.merge(details)
        (class << self; self; end).send(:define_method, name) do |options={}|
          _call(name, options)
        end
        (class << self; self; end).send(:define_method, "lazy_#{name}".to_sym) do |options={}|
          _call("lazy_#{name}", options)
        end
      end

      def _call(name, options)
        mapped = _calls[name]
        lazy_forced = false
        if mapped.nil? && name.to_s[/^lazy_/]
          mapped = _calls[name.to_s.gsub(/^lazy_/, '').to_sym]
          lazy_forced = true
        end
        request = Request.new(mapped, self, options)
        if lazy_load? || lazy_forced
          Flexirest::LazyLoader.new(request)
        else
          request.call
        end
      end

      def _calls
        @_calls
      end

      def _mapped_method(name)
        _calls[name]
      end

      def inherited(subclass)
        subclass.instance_variable_set(:@_calls, {})
      end

    end

    def self.included(base)
      base.extend(ClassMethods)
    end

  end
end

Version data entries

126 entries across 126 versions & 1 rubygems

Version Path
flexirest-1.12.4 lib/flexirest/mapping.rb
flexirest-1.12.3 lib/flexirest/mapping.rb
flexirest-1.12.2 lib/flexirest/mapping.rb
flexirest-1.12.1 lib/flexirest/mapping.rb
flexirest-1.12.0 lib/flexirest/mapping.rb
flexirest-1.11.3 lib/flexirest/mapping.rb
flexirest-1.11.2 lib/flexirest/mapping.rb
flexirest-1.11.1 lib/flexirest/mapping.rb
flexirest-1.11.0 lib/flexirest/mapping.rb
flexirest-1.10.12 lib/flexirest/mapping.rb
flexirest-1.10.11 lib/flexirest/mapping.rb
flexirest-1.10.10 lib/flexirest/mapping.rb
flexirest-1.10.9 lib/flexirest/mapping.rb
flexirest-1.10.8 lib/flexirest/mapping.rb
flexirest-1.10.7 lib/flexirest/mapping.rb
flexirest-1.10.6 lib/flexirest/mapping.rb
flexirest-1.10.5 lib/flexirest/mapping.rb
flexirest-1.10.4 lib/flexirest/mapping.rb
flexirest-1.10.3 lib/flexirest/mapping.rb
flexirest-1.10.2 lib/flexirest/mapping.rb