Sha256: 287c18ec79e34fe8f11ab2872751e219932cb54599c57ac15ea565afc0f0df54
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
require 'net/https' require 'singleton' module GitHub class Api include Singleton attr_writer :auth def auth @auth || {} end def authenticated? auth != {} end def ensure_auth opts ={} return if authenticated? @auth = {'login'=>opts[:login], 'token'=>opts[:token]} raise("Authentication failed") unless authenticated? end # Turns string into appropriate class constant, returns nil if class not found def classify name klass = name.split("::").inject(Kernel) {|klass, const_name| klass.const_get const_name } klass.is_a?(Class) ? klass : nil rescue NameError nil end def request verb, url, params = {} method = classify('Net::HTTP::' + verb.to_s.capitalize) uri = URI.parse url server = Net::HTTP.new(uri.host, uri.port) server.use_ssl = (uri.scheme == 'https') server.verify_mode = OpenSSL::SSL::VERIFY_NONE if server.use_ssl? server.start do |http| req = method.new(uri.path) req.form_data = params.merge(auth) http.request(req) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
git_hub-0.2.10 | lib/git_hub/api.rb |
git_hub-0.2.7 | lib/git_hub/api.rb |
git_hub-0.2.0 | lib/git_hub/api.rb |