Sha256: 2ba85377c713494f4aac1812a0f41873aa7c02d4667b71f149db21e89ffe7e45

Contents?: true

Size: 970 Bytes

Versions: 1

Compression:

Stored size: 970 Bytes

Contents

module LitmusPaper
  module Dependency
    class HTTP
      def initialize(uri, options = {})
        @uri = uri
        @expected_content = Regexp.new(options.fetch(:content, '.*'))
        @method = options.fetch(:method, 'GET')
      end

      def available?
        response = _make_request
        _successful_response?(response) && _body_matches?(response)
      rescue Exception
        false
      end

      def _make_request
        uri = URI.parse(@uri)
        request = Net::HTTP.const_get(@method.capitalize).new(uri.normalize.path)
        request.set_form_data({})

        Net::HTTP.start(uri.host, uri.port) do |http|
          http.request(request)
        end
      end

      def _successful_response?(response)
        response.is_a? Net::HTTPSuccess
      end

      def _body_matches?(response)
        (response.body =~ @expected_content) ? true : false
      end

      def to_s
        "Dependency::HTTP(#{@uri})"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
litmus_paper-0.0.3 lib/litmus_paper/dependency/http.rb