Sha256: ba44ce43ba7717b999967209ebb96932f40c2680ab1e9b95215a9d0926c827f0

Contents?: true

Size: 936 Bytes

Versions: 2

Compression:

Stored size: 936 Bytes

Contents

module IndieWeb
  module Endpoints
    module Services
      class ResponseParserService
        # @param body [Nokogiri::HTML::Document]
        # @param identifier [Symbol]
        # @return [Array<String>]
        def self.parse_body(body, identifier, node = 'link')
          # Reject endpoints that contain a fragment identifier
          body.css(%(#{node}[rel~="#{identifier}"][href]:not([href*="#"]))).map { |element| element['href'] }
        end

        # @param headers [Hash{Symbol => Array<LinkHeaderParser::LinkHeader}]
        # @param identifier [Symbol]
        # @return [Array<String>, nil]
        def self.parse_headers(headers, identifier)
          return unless headers.key?(identifier)

          # Reject endpoints that contain a fragment identifier
          headers[identifier].reject { |header| Addressable::URI.parse(header.target_uri).fragment }.map(&:target_uri)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
indieweb-endpoints-6.1.0 lib/indieweb/endpoints/services/response_parser_service.rb
indieweb-endpoints-6.0.0 lib/indieweb/endpoints/services/response_parser_service.rb