Method: TentClient::Discovery#discover

Defined in:
lib/tent-client/discovery.rb

#discover(options = {}) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/tent-client/discovery.rb', line 26

def discover(options = {})
  discover_res, meta_post_urls = perform_head_discovery || perform_get_discovery

  if meta_post_urls.empty?
    return options[:return_response] ? last_response : nil
  end

  meta_post_urls.uniq.each do |url|
    url = URI.join(discover_res.env[:url].to_s, url).to_s
    begin
      res = http.get(url) do |request|
        request.headers['Accept'] = POST_CONTENT_TYPE % "https://tent.io/types/meta/v0#"
      end
    rescue Faraday::Error::TimeoutError, Faraday::Error::ConnectionFailed
      res = Faraday::Response.new({})
    end

    if options[:return_response]
      return res
    elsif res.success? && (Hash === res.body)
      return res.body['post']
    end
  end
  nil
end