Module: Requests::Utils

Defined in:
lib/requests/utils.rb

Class Method Summary collapse

Class Method Details

.default_headersObject



6
7
8
9
10
11
12
# File 'lib/requests/utils.rb', line 6

def default_headers
  CIHash.new(
    'User-Agent' => default_user_agent,
    'Accept' => '*/*',
    'Accept-Encoding' => 'gzip, deflate'
  )
end

.default_user_agentObject



14
15
16
# File 'lib/requests/utils.rb', line 14

def default_user_agent
  "requests_ruby/#{Requests::VERSION}"
end

.encoding_from_headers(headers) ⇒ Object



40
41
42
43
44
45
# File 'lib/requests/utils.rb', line 40

def encoding_from_headers(headers)
  ct = headers['content-type']
  return 'UTF-8' unless ct
  m = ct.match(/charset=([\w\-]+)/i)
  m ? m[1] : 'UTF-8'
end

.guess_filename(obj, fallback) ⇒ Object



36
37
38
39
# File 'lib/requests/utils.rb', line 36

def guess_filename(obj, fallback)
  return File.basename(obj.path) if obj.respond_to?(:path) && obj.path
  fallback.to_s
end

.looks_like_html?(str) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/requests/utils.rb', line 51

def looks_like_html?(str)
  !!(str.to_s.lstrip =~ /\A(<!DOCTYPE html|<html)/i)
end


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/requests/utils.rb', line 17

def parse_header_links(value)
  return {} if value.nil? || value.empty?
  out = {}
  value.split(',').each do |part|
    seg = part.split(';')
    url = seg.shift.to_s.strip.gsub(/[<>]/, '')
    attrs = {}
    rel = nil
    seg.each do |a|
      k, v = a.strip.split('=', 2)
      next unless k
      v = v.to_s.gsub('"', '')
      attrs[k] = v
      rel = v if k == 'rel'
    end
    out[rel] = attrs.merge('url' => url)
  end
  out
end

.truncate(str, length = 200) ⇒ Object



46
47
48
49
50
# File 'lib/requests/utils.rb', line 46

def truncate(str, length = 200)
  s = str.to_s
  return s if s.length <= length
  "#{s[0, length]}... (#{s.length} chars total)"
end