Sha256: 218a93d97e9d2f9c7783d755505a7c64c049814fe8d0fe76b7c53c1b8d7a093d

Contents?: true

Size: 1.74 KB

Versions: 9

Compression:

Stored size: 1.74 KB

Contents

# frozen_string_literal: true
require_relative '../utils/loggeable'
require_relative '../utils/validatable'
require_relative '../utils/parameter_filter'

module FinAppsCore
  module REST
    class Resources # :nodoc:
      include FinAppsCore::Utils::Loggeable
      include FinAppsCore::Utils::Validatable
      include FinAppsCore::Utils::ParameterFilter
      require 'erb'

      attr_reader :client

      # @param [FinAppsCore::REST::Client] client
      # @return [FinAppsCore::REST::Resources]
      def initialize(client)
        not_blank(client, :client)
        @client = client
        @logger = client.logger if client.respond_to?(:logger)
      end

      def list(path=nil)
        path = end_point.to_s if path.nil?
        request_with_body(path, :get, {})
      end

      def create(params={}, path=nil)
        request_with_body(path, :post, params)
      end

      def update(params={}, path=nil)
        request_with_body(path, :put, params)
      end

      def show(id=nil, path=nil)
        request_without_body(path, :get, id)
      end

      def destroy(id=nil, path=nil)
        request_without_body(path, :delete, id)
      end

      protected

      def end_point
        self.class.name.split('::').last.downcase
      end

      private

      def request_without_body(path, method, id)
        not_blank(id, :id) if path.nil?
        path = "#{end_point}/:id".sub ':id', ERB::Util.url_encode(id) if path.nil?
        request_with_body path, method, {}
      end

      def request_with_body(path, method, params)
        path = end_point if path.nil?
        logger.debug "#{self.class.name}##{__method__} => path: #{path} params: #{skip_sensitive_data(params)}"

        client.send_request path, method, params
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
finapps_core-2.0.20 lib/finapps_core/rest/resources.rb
finapps_core-2.0.19 lib/finapps_core/rest/resources.rb
finapps_core-2.0.18 lib/finapps_core/rest/resources.rb
finapps_core-2.0.17 lib/finapps_core/rest/resources.rb
finapps_core-2.0.16 lib/finapps_core/rest/resources.rb
finapps_core-2.0.15 lib/finapps_core/rest/resources.rb
finapps_core-2.0.14 lib/finapps_core/rest/resources.rb
finapps_core-2.0.13 lib/finapps_core/rest/resources.rb
finapps_core-2.0.12 lib/finapps_core/rest/resources.rb