Sha256: 52623383483c19ad0fb804afbc94a2bed6cb97dea19a43b1bf98796ce4cc4793

Contents?: true

Size: 1.79 KB

Versions: 23

Compression:

Stored size: 1.79 KB

Contents

module Rhoconnect
  module Controller
    class Base < Rhoconnect::Server
      def self.rest_path
        "/#{_prefix}/#{_rest_name}"
      end
      
      def self._rest_name
        ret = self.name
        # remove the namespace
        stripped = ret.split("::").last
        ret = stripped unless stripped.nil?
        
        ret.gsub!(/Controller/){}
      end
      
      def self._prefix
        "app/#{Rhoconnect::API_VERSION}"
      end
      
      def self.get(route, params = {}, &block)
        _add_route(route, :get, params, &block)  
      end
      
      def self.post(route, params = {}, &block)
        _add_route(route, :post, params, &block)  
      end
      
      def self.put(route, params = {}, &block)
        _add_route(route, :put, params, &block)  
      end
      
      def self.delete(route, params = {}, &block)
        _add_route(route, :delete, params, &block)  
      end
      
      private
        def self._add_route(route, verb, params, &block)
          resource_route = route
          @default_settings ||= {}
          @default_settings.each do |setting, value|
            params[setting] = value unless params.has_key?(setting)
          end
          api4 "#{self.rest_path}", resource_route, verb, params, &block
        end
    end
    
    # the only purpose of this class is to prepend
    # rest route with /rc/version prefix
    # as opposed to Application-specific resources
    class APIBase < Rhoconnect::Controller::Base
      def self._rest_name
        ret = self.name
        # remove the namespace
        stripped = ret.split("::").last
        ret = stripped unless stripped.nil?
        
        ret.gsub!(/Controller/){}
        ret.downcase 
      end

      private
      def self._prefix
        "rc/#{Rhoconnect::API_VERSION}"
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
rhoconnect-7.6.0 lib/rhoconnect/controller/base.rb
rhoconnect-7.5.1 lib/rhoconnect/controller/base.rb
rhoconnect-7.4.1 lib/rhoconnect/controller/base.rb
rhoconnect-7.1.17 lib/rhoconnect/controller/base.rb
rhoconnect-6.2.0 lib/rhoconnect/controller/base.rb
rhoconnect-6.0.11 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.18 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.17 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.15 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.0.22 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.2 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.0.7 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.0.3 lib/rhoconnect/controller/base.rb
rhoconnect-5.5.0 lib/rhoconnect/controller/base.rb
rhoconnect-5.1.1 lib/rhoconnect/controller/base.rb
rhoconnect-4.0.4 lib/rhoconnect/controller/base.rb
rhoconnect-4.0.3 lib/rhoconnect/controller/base.rb
rhoconnect-4.0.2 lib/rhoconnect/controller/base.rb
rhoconnect-4.0.1 lib/rhoconnect/controller/base.rb
rhoconnect-4.0.0 lib/rhoconnect/controller/base.rb