Sha256: 2b7d11a4fc04eb1d0ae9e4d70483d136bce58f57c8aa1a4e1d16a3b1c657b182

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

module Webmention
  module Verification
    class BaseVerifier
      class << self
        attr_reader :mime_types
      end

      def initialize(response, target, **options)
        raise ArgumentError, "response must be an HTTP::Response (given #{response.class.name})" unless response.is_a?(HTTP::Response)
        raise ArgumentError, "target must be a String (given #{target.class.name})" unless target.is_a?(String)

        @response = response
        @target = target
        @options = options

        raise UnsupportedMimeTypeError, "Unsupported MIME Type: #{response.mime_type}" unless self.class.mime_types.include?(response.mime_type)
      end

      def results
        @results ||= parse_response_body
      end

      def verified?
        results.any?
      end

      private

      def response_body
        @response_body ||= @response.body.to_s
      end

      def target_regexp
        @target_regexp ||= /^#{target_regexp_str}$/
      end

      def target_regexp_str
        return @target if @options.fetch(:strict, true)

        @target.sub(%r{https?://}, 'https?://')
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
webmention-verification-4.0.0 lib/webmention/verification/verifiers/base_verifier.rb
webmention-verification-3.0.0 lib/webmention/verification/verifiers/base_verifier.rb