lib/indieweb/endpoints/parsers.rb in indieweb-endpoints-2.0.0 vs lib/indieweb/endpoints/parsers.rb in indieweb-endpoints-3.0.0
- old
+ new
@@ -1,41 +1,13 @@
module IndieWeb
module Endpoints
module Parsers
- extend Concerns::Registerable
+ def self.register(klass)
+ registered[klass.identifier] = klass
+ end
- class BaseParser
- def initialize(response)
- raise ArgumentError, "response must be an HTTP::Response (given #{response.class.name})" unless response.is_a?(HTTP::Response)
-
- @response = response
- end
-
- def results
- mapped_results.shift
- end
-
- private
-
- attr_reader :response
-
- def mapped_results
- @mapped_results ||= results_from_http_request.map { |endpoint| Absolutely.to_abs(base: response.uri.to_s, relative: endpoint) }.uniq.sort
- rescue Absolutely::InvalidURIError => exception
- raise InvalidURIError, exception
- end
-
- def results_from_body
- @results_from_body ||= Services::ResponseBodyParserService.new.parse(response, self.class.identifier)
- end
-
- def results_from_headers
- @results_from_headers ||= Services::ResponseHeadersParserService.new.parse(response, self.class.identifier)
- end
-
- def results_from_http_request
- @results_from_http_request ||= [results_from_headers, results_from_body].flatten.compact
- end
+ def self.registered
+ @registered ||= {}
end
end
end
end