Sha256: ce52ae050b29cad4560753b1a88de60b70ed0f9175d46823a5bcf8a516d85287
Contents?: true
Size: 1.73 KB
Versions: 1
Compression:
Stored size: 1.73 KB
Contents
require "uri" require "json" require "openssl" require "rest-client" require "omise/util" require "omise/config" require "omise/error" require "omise/version" module Omise class Resource CA_BUNDLE_PATH = File.expand_path("../../../data/ca_certificates.pem", __FILE__) DEFAULT_HEADERS = { user_agent: "OmiseRuby/#{Omise::VERSION} Ruby/#{RUBY_VERSION}", } def initialize(url, path, key) @uri = prepare_uri(url, path) @headers = prepare_headers @key = key set_resource end attr_reader :uri, :headers, :key def get(attributes = {}) if attributes.any? @uri.query = Omise::Util.generate_query(attributes) set_resource end @resource.get { |r| Omise::Util.load_response(r) } end def patch(attributes = {}) @resource.patch(attributes) { |r| Omise::Util.load_response(r) } end def post(attributes = {}) @resource.post(attributes) { |r| Omise::Util.load_response(r) } end def delete @resource.delete { |r| Omise::Util.load_response(r) } end private def set_resource @resource = RestClient::Resource.new(@uri.to_s, { user: @key, verify_ssl: OpenSSL::SSL::VERIFY_PEER, ssl_ca_file: CA_BUNDLE_PATH, headers: @headers, }) end def prepare_uri(url, path) URI.parse(url).tap do |uri| path = URI.parse(path) query = path.query path.query = nil uri.path = [uri.path, path.to_s].join uri.query = query end end def prepare_headers headers = {}.merge(DEFAULT_HEADERS) if Omise.api_version headers = headers.merge(omise_version: Omise.api_version) end headers end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
omise-0.5.0 | lib/omise/resource.rb |