Class: Yawast::Shared::Http

Inherits:
Object
  • Object
show all
Defined in:
lib/shared/http.rb

Class Method Summary collapse

Class Method Details

.check_not_found(uri, file) ⇒ Object



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/shared/http.rb', line 117

def self.check_not_found(uri, file)
  fake_uri = uri.copy

  fake_uri.path = if file
                    "/#{SecureRandom.hex}.html"
                  else
                    "/#{SecureRandom.hex}/"
                  end

  if Yawast::Shared::Http.get_status_code(fake_uri) != '404'
    # crazy 404 handling
    return false
  end

  true
end

.get(uri, headers = nil) ⇒ Object



65
66
67
# File 'lib/shared/http.rb', line 65

def self.get(uri, headers = nil)
  get_with_code(uri, headers)[:body]
end

.get_headers(extra_headers = nil) ⇒ Object

noinspection RubyStringKeysInHashInspection



135
136
137
138
139
140
141
142
143
144
145
# File 'lib/shared/http.rb', line 135

def self.get_headers(extra_headers = nil)
  headers = if @cookie.nil?
              {'User-Agent' => HTTP_UA}
            else
              {'User-Agent' => HTTP_UA, 'Cookie' => @cookie}
            end

  headers.merge! extra_headers unless extra_headers.nil?

  headers
end

.get_http(uri) ⇒ Object



107
108
109
110
111
112
113
114
115
# File 'lib/shared/http.rb', line 107

def self.get_http(uri)
  req = if @proxy
          Net::HTTP.new(uri.host, uri.port, @proxy_host, @proxy_port)
        else
          Net::HTTP.new(uri.host, uri.port)
        end

  req
end

.get_json(uri) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/shared/http.rb', line 69

def self.get_json(uri)
  body = ''

  begin
    req = get_http(uri)
    req.use_ssl = uri.scheme == 'https'
    res = req.request_get(uri, {'User-Agent' => "YAWAST/#{Yawast::VERSION}"})
    body = res.read_body
  rescue # rubocop:disable Style/RescueStandardError, Lint/HandleExceptions
    # do nothing for now
  end

  JSON.parse body
end

.get_raw(uri, headers = nil) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/shared/http.rb', line 38

def self.get_raw(uri, headers = nil)
  res = nil

  begin
    req = get_http(uri)
    req.use_ssl = uri.scheme == 'https'
    res = req.request_get(uri, get_headers(headers))
  rescue => e # rubocop:disable Style/RescueStandardError
    Yawast::Utilities.puts_error "Error sending request to #{uri} - '#{e.message}'"
  end

  res
end

.get_status_code(uri) ⇒ Object



99
100
101
102
103
104
105
# File 'lib/shared/http.rb', line 99

def self.get_status_code(uri)
  req = get_http(uri)
  req.use_ssl = uri.scheme == 'https'
  res = req.head(uri, get_headers)

  res.code
end

.get_with_code(uri, headers = nil) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/shared/http.rb', line 52

def self.get_with_code(uri, headers = nil)
  res = get_raw(uri, headers)
  body = ''
  code = nil

  unless res.nil?
    body = res.read_body
    code = res.code
  end

  {body: body, code: code}
end

.head(uri) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/shared/http.rb', line 23

def self.head(uri)
  begin
    req = get_http(uri)
    req.use_ssl = uri.scheme == 'https'
    req.head(uri, get_headers)
  rescue # rubocop:disable Style/RescueStandardError
    # if we get here, the HEAD failed - but GET may work
    # so we silently fail back to using GET instead
    req = get_http(uri)
    req.use_ssl = uri.scheme == 'https'
    res = req.request_get(uri, get_headers)
    res
  end
end

.put(uri, body, headers = nil) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/shared/http.rb', line 84

def self.put(uri, body, headers = nil)
  ret = nil

  begin
    req = get_http(uri)
    req.use_ssl = uri.scheme == 'https'
    res = req.request_put(uri, body, get_headers(headers))
    ret = res.read_body
  rescue # rubocop:disable Style/RescueStandardError, Lint/HandleExceptions
    # do nothing for now
  end

  ret
end

.setup(proxy, cookie) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/shared/http.rb', line 9

def self.setup(proxy, cookie)
  if !proxy.nil? && proxy.include?(':')
    @proxy_host, @proxy_port = proxy.split(':')
    @proxy = true

    puts "Using Proxy: #{proxy}"
  else
    @proxy = false
  end

  @cookie = cookie
  puts "Using Cookie: #{@cookie}" unless @cookie.nil?
end