Rearrange demo
Add contact autocompletion
This commit is contained in:
72
examples/widgetapp/autocompletion/google_autocompletion.e
Normal file
72
examples/widgetapp/autocompletion/google_autocompletion.e
Normal file
@@ -0,0 +1,72 @@
|
||||
note
|
||||
description: "Summary description for {GOOGLE_AUTOCOMPLETION}."
|
||||
author: ""
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
|
||||
class
|
||||
GOOGLE_AUTOCOMPLETION
|
||||
|
||||
inherit
|
||||
|
||||
WSF_AUTOCOMPLETION
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature {NONE} -- Initialization
|
||||
|
||||
make ()
|
||||
do
|
||||
template := "{{=value}}";
|
||||
end
|
||||
|
||||
feature -- Implementation
|
||||
|
||||
autocompletion (input: STRING): JSON_ARRAY
|
||||
local
|
||||
o: JSON_OBJECT
|
||||
l_result: INTEGER
|
||||
l_curl_string: CURL_STRING
|
||||
json_parser: JSON_PARSER
|
||||
query_str: STRING
|
||||
do
|
||||
query_str := input
|
||||
query_str.replace_substring_all (" ", "+")
|
||||
curl_handle := curl_easy.init
|
||||
create Result.make_array
|
||||
if curl_handle /= default_pointer then
|
||||
create l_curl_string.make_empty
|
||||
curl_easy.setopt_string (curl_handle, {CURL_OPT_CONSTANTS}.curlopt_url, "http://google.com/complete/search?client=chrome&q=" + query_str)
|
||||
curl_easy.set_write_function (curl_handle)
|
||||
curl_easy.setopt_integer (curl_handle, {CURL_OPT_CONSTANTS}.curlopt_writedata, l_curl_string.object_id)
|
||||
l_result := curl_easy.perform (curl_handle)
|
||||
|
||||
-- Always cleanup
|
||||
curl_easy.cleanup (curl_handle)
|
||||
create json_parser.make_parser (l_curl_string.out)
|
||||
if attached {JSON_ARRAY} json_parser.parse_json as data and then attached {JSON_ARRAY} data.i_th (2) as list then
|
||||
across
|
||||
1 |..| list.count as c
|
||||
loop
|
||||
if attached {JSON_STRING} list.i_th (c.item) as row then
|
||||
create o.make
|
||||
o.put (create {JSON_STRING}.make_json (row.unescaped_string_32), "value")
|
||||
Result.add (o)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
feature {NONE} -- Implementation
|
||||
|
||||
curl_easy: CURL_EASY_EXTERNALS
|
||||
once
|
||||
create Result
|
||||
end
|
||||
|
||||
curl_handle: POINTER;
|
||||
-- cURL handle
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user