3c614982bf4b13d935635cfa77f4eb1f6ed4fbb9
1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 # Example for the `app::http_request` main service `AsyncHttpRequest`
16 module http_request_example
is
17 app_name
"app.nit HTTP"
18 app_namespace
"org.nitlanguage.http_example"
23 import app
::http_request
24 import android
::aware
# for android_api_target
26 # Simple asynchronous HTTP request to http://example.com/ displaying feedback to the window
28 super AsyncHttpRequest
30 # Back reference to the window to show feedback to the user
31 var win
: HttpRequestClientWindow
36 redef fun uri
do return "http://example.com/"
37 redef fun deserialize_json
do return false
44 win
.label_response
.text
= "Sending request..."
46 # Disable button to prevent double requests
47 win
.button_request
.enabled
= false
50 redef fun on_load
(data
, status
)
51 do win
.label_response
.text
= "Received response code {status} with {data.as(Text).byte_length} bytes"
53 redef fun on_fail
(error
)
54 do win
.label_response
.text
= "Connection error: {error}"
56 redef fun after
do win
.button_request
.enabled
= true
59 # Simple window with a label and a button
60 class HttpRequestClientWindow
64 var layout
= new ListLayout(parent
=self)
66 # Button to send request
67 var button_request
= new Button(parent
=layout
, text
="Press to send HTTP request")
69 # Label displaying feedback to user
70 var label_response
= new Label(parent
=layout
, text
="No response yet.")
72 init do button_request
.observers
.add
self
74 redef fun on_event
(event
)
76 if event
isa ButtonPressEvent and event
.sender
== button_request
then
77 # Prepare and send request
78 var request
= new MyHttpRequest(self)
84 redef fun root_window
do return new HttpRequestClientWindow