Sha256: 5aa851b9319554ecbacb238595f1b0a99eb7bd43b9e3f8e100d55e7ddc34fac3
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
require "set" require "uri" require "json/ext" require "net/http" module RorVsWild class Client HTTPS = "https".freeze CERTIFICATE_AUTHORITIES_PATH = File.expand_path("../../../cacert.pem", __FILE__) DEFAULT_TIMEOUT = 1 attr_reader :api_url, :api_key, :timeout, :threads def initialize(config) Kernel.at_exit(&method(:at_exit)) @api_url = config[:api_url] @api_key = config[:api_key] @timeout ||= config[:timeout] || DEFAULT_TIMEOUT @threads = Set.new end def post(path, data) uri = URI(api_url + path) post = Net::HTTP::Post.new(uri.path, "X-Gem-Version".freeze => RorVsWild::VERSION) post.content_type = "application/json".freeze post.basic_auth(nil, api_key) post.body = data.to_json http.request(post) end def http @http ||= new_http end def new_http uri = URI(api_url) http = Net::HTTP.new(uri.host, uri.port) http.open_timeout = timeout if uri.scheme == HTTPS http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.ca_file = CERTIFICATE_AUTHORITIES_PATH http.use_ssl = true end http end def post_async(path, data) Thread.new do begin threads.add(Thread.current) post(path, data) ensure threads.delete(Thread.current) end end end def at_exit threads.each(&:join) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rorvswild-1.0.0 | lib/rorvswild/client.rb |
rorvswild-1.0.0.pre.alpha8 | lib/rorvswild/client.rb |