Class: ROX::WebConversation

Inherits:
Object
  • Object
show all
Defined in:
lib/rox/webconversation.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(uri) ⇒ WebConversation



9
10
11
12
# File 'lib/rox/webconversation.rb', line 9

def initialize(uri)
  @cookies = Hash.new
  @uri = URI.parse(uri)
end

Instance Attribute Details

#cookiesObject

Returns the value of attribute cookies.



7
8
9
# File 'lib/rox/webconversation.rb', line 7

def cookies
  @cookies
end

Instance Method Details

#add_cookies(req) ⇒ Object



61
62
63
64
65
66
67
68
69
# File 'lib/rox/webconversation.rb', line 61

def add_cookies(req)
  return if @cookies.empty?
  cookie_string = ""
  @cookies.each do
    |key, value|
    cookie_string << "#{key}=#{value},"
  end
  req["Cookie"] = cookie_string[0...cookie_string.size-1]
end

#delete(url, params = {}) ⇒ Object



41
42
43
44
45
# File 'lib/rox/webconversation.rb', line 41

def delete(url, params = {})
  req = Net::HTTP::Delete.new(url+"?"+query(params))
  res = request(req)
  return res.body
end

#get(url, params = {}) ⇒ Object



14
15
16
17
18
# File 'lib/rox/webconversation.rb', line 14

def get(url, params = {})
  req = Net::HTTP::Get.new(url+"?"+query(params))
  res = request(req)
  return res.body
end

#post(url, params = {}) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rox/webconversation.rb', line 20

def post(url, params = {})
  stringified_params = Hash.new
  params.each do
    |key, value|
    next if key == :body or key == 'body'
    stringified_params[key.to_s] = value.to_s
  end
  req = Net::HTTP::Post.new(url)
  req.set_form_data(stringified_params)
  req.body = params[:body] || params['body']
  res = request(req)
  return res.body
end

#put(url, params = {}) ⇒ Object



34
35
36
37
38
39
# File 'lib/rox/webconversation.rb', line 34

def put(url, params = {})
  req = Net::HTTP::Put.new(url+"?"+query(params))
  req.body = params[:body] || params['body']
  res = request(req)
  return res.body
end

#query(params) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
# File 'lib/rox/webconversation.rb', line 71

def query(params)
  query = ""
  params.each do
    |key, value|
    next if key == :body || key == 'body'
    query += '&'
    query += URI.escape(key.to_s)+"="+URI.escape(value.to_s)
  end
  query = query[1..query.size]
  return query
end

#remember_cookies(res) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/rox/webconversation.rb', line 47

def remember_cookies(res)
setCookie = res['Set-Cookie']
return unless setCookie
cookies = setCookie.split(/\s*[,;]\s*/)

cookies.each do
  |cookieDef|
    if (cookieDef =~ /^(JS|open-xchange)/)
      key, value = cookieDef.split(/\=/)
      @cookies[key] = value
    end
  end
end

#request(req) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
# File 'lib/rox/webconversation.rb', line 83

def request(req)
  add_cookies(req)
  http_session = Net::HTTP.new(@uri.host, @uri.port)
  http_session.use_ssl = @uri.scheme == "https"
  res = http_session.start do
    |http|
    http.request(req)
  end
  remember_cookies(res)
  return res
end