Sha256: ea9b3bb01da81d28a185c477ee28020c8839baa7fb68a881a564495400d56f05

Contents?: true

Size: 842 Bytes

Versions: 4

Compression:

Stored size: 842 Bytes

Contents

module Webmention
  module Endpoint
    class Request
      HTTP_HEADERS_OPTS = {
        accept: '*/*',
        user_agent: 'Webmention Endpoint Discovery (https://rubygems.org/gems/webmention-endpoint)'
      }.freeze

      def initialize(uri)
        raise ArgumentError, "uri must be an Addressable::URI (given #{uri.class.name})" unless uri.is_a?(Addressable::URI)

        @uri = uri
      end

      def response
        @response ||= HTTP.follow.headers(HTTP_HEADERS_OPTS).timeout(
          connect: 10,
          read: 10
        ).get(@uri)
      rescue HTTP::ConnectionError => error
        raise ConnectionError, error
      rescue HTTP::TimeoutError => error
        raise TimeoutError, error
      rescue HTTP::Redirector::TooManyRedirectsError => error
        raise TooManyRedirectsError, error
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
webmention-endpoint-2.0.3 lib/webmention/endpoint/request.rb
webmention-endpoint-2.0.2 lib/webmention/endpoint/request.rb
webmention-endpoint-2.0.1 lib/webmention/endpoint/request.rb
webmention-endpoint-2.0.0 lib/webmention/endpoint/request.rb