Sha256: 44cff5e8cd6eb03f224114b132610d7fbc608a96cd5abfac1b4498689793cf63

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

require 'dry/monads'

module DevRuby
  module Resources
    class BaseResource
      include Dry::Monads[:result]

      attr_reader :client

      def initialize(client)
        @client = client
      end

      private

      def get_request(url, params: {}, headers: {})
        client.connection.get(url, params, headers)
      end

      def post_request(url, body:, headers: {})
        client.connection.post(url, body, headers)
      end

      def patch_request(url, body:, headers: {})
        client.connection.patch(url, body, headers)
      end

      def put_request(url, body:, headers: {})
        client.connection.put(url, body, headers)
      end

      def delete_request(url, params: {}, headers: {})
        client.connection.delete(url, params, headers)
      end

      def error_parser(response)
        DevRuby::Objects::Error.new(response.body)
      end

      def to_default_pagination_params(params)
        params[:page] ||= 1
        params[:per_page] ||= DevRuby.per_page
        params
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dev_ruby-1.0.0 lib/dev_ruby/resources/base_resource.rb
dev_ruby-0.2.0 lib/dev_ruby/resources/base_resource.rb