Class: Easywins::Target

Inherits:
Object
  • Object
show all
Defined in:
lib/easywins/target.rb

Defined Under Namespace

Classes: InvalidBaseUrlError, TooManyRedirectsError

Constant Summary collapse

URL_REGEX =
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?\??$/
REDIRECT_CODES =
[300, 301, 302, 303, 305]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_url, options = {}) ⇒ Target



14
15
16
17
# File 'lib/easywins/target.rb', line 14

def initialize(base_url, options = {})
  @base_url = validate_and_normalize_url!(base_url)
  @options  = options
end

Instance Attribute Details

#base_urlObject (readonly)

Returns the value of attribute base_url.



6
7
8
# File 'lib/easywins/target.rb', line 6

def base_url
  @base_url
end

Instance Method Details

#alive?Boolean



28
29
30
31
32
# File 'lib/easywins/target.rb', line 28

def alive?
  response = request('/', true)
rescue *HttpClient::HANDLED_EXCEPTIONS
  false
end

#redirects?Boolean



34
35
36
37
38
39
40
41
42
# File 'lib/easywins/target.rb', line 34

def redirects?
  final_url = validate_and_normalize_url!(follow_redirects!("#{@base_url}/"))
  if @base_url != final_url
    @base_url = final_url
    true
  else
    false
  end
end

#request(path, use_get = false) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/easywins/target.rb', line 19

def request(path, use_get = false)
  url = "#{@base_url}#{path}"
  if use_get
    http_client.do_get(url, {}, :verify => @options[:verify])
  else
    http_client.do_head(url, {}, :verify => @options[:verify])
  end
end