mainly to avoid using 80 or 8080 which are often already used (by current webserver, or even skype, or jenkins, or ...)
147 lines
3.0 KiB
Plaintext
147 lines
3.0 KiB
Plaintext
note
|
|
description : "Objects that ..."
|
|
author : "$Author$"
|
|
date : "$Date$"
|
|
revision : "$Revision$"
|
|
|
|
class
|
|
RESTBUCK_CLIENT
|
|
|
|
create
|
|
make
|
|
|
|
feature {NONE} -- Initialization
|
|
|
|
make
|
|
-- Initialize `Current'.
|
|
local
|
|
h: LIBCURL_HTTP_CLIENT
|
|
sess: HTTP_CLIENT_SESSION
|
|
resp : HTTP_CLIENT_RESPONSE
|
|
l_location : detachable READABLE_STRING_8
|
|
body : STRING
|
|
do
|
|
create h.make
|
|
sess := h.new_session ("http://127.0.0.1:9090")
|
|
-- Create Order
|
|
print ("%N Create Order %N")
|
|
resp := create_order (sess)
|
|
|
|
-- Read the Order
|
|
print ("%N Read Order %N")
|
|
l_location := resp.header ("Location")
|
|
resp := read_order (sess, l_location)
|
|
|
|
-- Update the Order
|
|
|
|
if attached resp.body as l_body then
|
|
body := l_body.as_string_8
|
|
body.replace_substring_all ("takeAway", "in Shop")
|
|
print ("%N Update Order %N")
|
|
resp := update_order (sess, l_location, body)
|
|
end
|
|
end
|
|
|
|
update_order ( sess: HTTP_CLIENT_SESSION; uri : detachable READABLE_STRING_8; a_body : STRING) : HTTP_CLIENT_RESPONSE
|
|
do
|
|
create Result.make
|
|
if attached uri as l_uri then
|
|
sess.set_base_url (l_uri)
|
|
Result := sess.put ("", Void, a_body )
|
|
-- Show headers
|
|
across
|
|
Result.headers as l_headers
|
|
loop
|
|
print (l_headers.item.name)
|
|
print (":")
|
|
print (l_headers.item.value)
|
|
io.put_new_line
|
|
end
|
|
|
|
-- Show body
|
|
print (Result.body)
|
|
io.put_new_line
|
|
end
|
|
end
|
|
|
|
|
|
read_order ( sess: HTTP_CLIENT_SESSION; uri : detachable READABLE_STRING_8) : HTTP_CLIENT_RESPONSE
|
|
do
|
|
create Result.make
|
|
if attached uri as l_uri then
|
|
sess.set_base_url (l_uri)
|
|
Result := sess.get ("", Void)
|
|
-- Show headers
|
|
across
|
|
Result.headers as l_headers
|
|
loop
|
|
print (l_headers.item.name)
|
|
print (":")
|
|
print (l_headers.item.value)
|
|
io.put_new_line
|
|
end
|
|
|
|
-- Show body
|
|
print (Result.body)
|
|
io.put_new_line
|
|
end
|
|
end
|
|
|
|
|
|
|
|
create_order (sess: HTTP_CLIENT_SESSION) : HTTP_CLIENT_RESPONSE
|
|
local
|
|
s: READABLE_STRING_8
|
|
j: JSON_PARSER
|
|
id: detachable STRING
|
|
context : HTTP_CLIENT_REQUEST_CONTEXT
|
|
do
|
|
s := "[
|
|
{
|
|
"location":"takeAway",
|
|
"items":[
|
|
{
|
|
"name":"Late",
|
|
"option":"skim",
|
|
"size":"Small",
|
|
"quantity":1
|
|
}
|
|
]
|
|
}
|
|
]"
|
|
|
|
create context.make
|
|
context.headers.put ("application/json", "Content-Type")
|
|
Result := sess.post ("/order", context, s)
|
|
-- Show the Headers
|
|
across
|
|
Result.headers as l_headers
|
|
loop
|
|
print (l_headers.item.name)
|
|
print (":")
|
|
print (l_headers.item.value)
|
|
io.put_new_line
|
|
end
|
|
|
|
|
|
-- Show the Response body
|
|
if attached Result.body as m then
|
|
create j.make_parser (m)
|
|
if j.is_parsed and attached j.parse_object as j_o then
|
|
if attached {JSON_STRING} j_o.item ("id") as l_id then
|
|
id := l_id.item
|
|
end
|
|
print (m)
|
|
io.put_new_line
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
feature {NONE} -- Implementation
|
|
|
|
invariant
|
|
-- invariant_clause: True
|
|
|
|
end
|