Sha256: 91807a7eecbf6341b0f6e4ad9f5940afec5779b3d1bbafdf3291b1ba5f94e8b3
Contents?: true
Size: 1.47 KB
Versions: 2
Compression:
Stored size: 1.47 KB
Contents
# frozen_string_literal: true require 'json' module ActsAsTextcaptcha class TextcaptchaApi BASE_URL = 'http://textcaptcha.com' def initialize(api_key: nil, api_endpoint: nil, raise_errors: false) if api_endpoint self.uri = URI(api_endpoint) else self.uri = URI("#{BASE_URL}/#{api_key}.json") end self.raise_errors = raise_errors || false rescue URI::InvalidURIError => exception raise ApiKeyError.new(api_key, exception) end def fetch parse(get.to_s) end private attr_accessor :uri, :raise_errors def get response = Net::HTTP.new(uri.host, uri.port).get(uri.path) if response.code == '200' response.body else handle_error ResponseError.new(uri, "status: #{response.code}") end rescue SocketError, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::EHOSTUNREACH, EOFError, Errno::ECONNREFUSED, Errno::ETIMEDOUT, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => exception handle_error ResponseError.new(uri, exception) end def parse(response) JSON.parse(response) unless response.empty? rescue JSON::ParserError handle_error ParseError.new(uri) end def handle_error(error) if raise_errors raise error else Rails.logger.error("#{error.class} #{error.message}") nil end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
acts_as_textcaptcha-4.5.1 | lib/acts_as_textcaptcha/textcaptcha_api.rb |
acts_as_textcaptcha-4.5.0 | lib/acts_as_textcaptcha/textcaptcha_api.rb |