Sha256: 61acd3dfd4b4522f69c628b95e056153b2ac88cbe48e0a948df07ec90425d9f3
Contents?: true
Size: 1.99 KB
Versions: 1
Compression:
Stored size: 1.99 KB
Contents
# frozen_string_literal: true module Mihari module Clients # # Base class for API clients # class Base # @return [String] attr_reader :base_url # @return [Hash] attr_reader :headers # @return [Integer] attr_reader :pagination_interval # @return [Integer, nil] attr_reader :timeout # # @param [String] base_url # @param [Hash] headers # @param [Integer] pagination_interval # @param [Integer, nil] timeout # def initialize(base_url, headers: {}, pagination_interval: Mihari.config.pagination_interval, timeout: nil) @base_url = base_url @headers = headers || {} @pagination_interval = pagination_interval @timeout = timeout end private def sleep_pagination_interval sleep pagination_interval end # # @return [::HTTP::Client] # def http @http ||= HTTP::Factory.build(headers:, timeout:) end # # @param [String] path # # @return [URI] # def url_for(path) URI.join base_url, path end # # @param [String] path # @param [Hash, nil] params # # @return [::HTTP::Response] # def get(path, params: nil) http.get(url_for(path), params:) end # # @param [String] path # @param [Hash, nil] params # # @return [Hash] # def get_json(path, params: nil) res = get(path, params:) JSON.parse res.body.to_s end # # @param [String] path # @param [Hash, nil] json # # @return [::HTTP::Response] # def post(path, json: {}) http.post(url_for(path), json:) end # # @param [String] path # @param [Hash, nil] json # # @return [Hash] # def post_json(path, json: {}) res = http.post(url_for(path), json:) JSON.parse res.body.to_s end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mihari-7.4.0 | lib/mihari/clients/base.rb |