-
Notifications
You must be signed in to change notification settings - Fork 1
/
DroidScriptServer.js
147 lines (128 loc) · 3.94 KB
/
DroidScriptServer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//
// This file defines the DroidScript server Activity. The activity starts
// a tiny web server and listens for requests on port 4042 (as default).
// PUT and GET requests are accepted. There is no security what so ever
// at this stage!
//
// TODO: Clean up the code. Add translations.
//
// @author Mikael Kindborg
// Email: mikael.kindborg@gmail.com
// Blog: divineprogrammer@blogspot.com
// Twitter: @divineprog
// Copyright (c) Mikael Kindborg 2010
// Source code license: MIT
//
var AlertDialog = Packages.android.app.AlertDialog;
var DialogInterface = Packages.anroid.content.DialogInterface;
var Widget = Packages.android.widget;
var LayoutParams = Packages.android.view.ViewGroup.LayoutParams;
var View = Packages.android.view.View;
var Gravity = Packages.android.view.Gravity;
var Intent = Packages.android.content.Intent;
var Menu = Packages.android.view.Menu;
var Intent = Packages.android.content.Intent;
var Uri = Packages.android.net.Uri;
var DroidScript = Packages.comikit.droidscript;
var Droid = Packages.comikit.droidscript.Droid;
var Server;
function onCreate(icicle)
{
var view = new Widget.TextView(Activity);
view.setGravity(Gravity.TOP);
view.setText(
"Welcome to the DroidScript Live Server!\n"
+ "IP-address:\n"
+ DroidScript.DroidScriptServer.getIpAddressesAsString()
);
// Set global variable (yuck!)
MessageView = view;
Activity.setContentView(view);
}
function onResume()
{
log("onResume - starting server");
startServer();
}
function onPause()
{
log("onPause - stopping server");
stopServer();
}
function onCreateOptionsMenu(menu)
{
return true;
}
function onPrepareOptionsMenu(menu)
{
menu.clear();
menuAdd(menu, 10, Droid.translate("Messages"));
menuAdd(menu, 11, Droid.translate("Stop server"));
menuAdd(menu, 12, Droid.translate("Start server"));
menuAdd(menu, 13, Droid.translate("Close"));
return true;
}
function onOptionsItemSelected(item)
{
if (menuItemHasId(item, 10)) { Droid.showMessages(Activity); }
else
if (menuItemHasId(item, 11)) { stopServer(); }
else
if (menuItemHasId(item, 12)) { startServer(); }
else
if (menuItemHasId(item, 13)) { Droid.Log.clear(); Activity.finish(); }
return true;
}
// Menu helper function.
function menuAdd(menu, id, label)
{
menu.add(Menu.NONE, Menu.FIRST + id, Menu.NONE, label);
}
// Menu helper function.
function menuItemHasId(item, id)
{
return (Menu.FIRST + id) == item.getItemId();
}
function log(s)
{
var Log = Packages.android.util.Log;
Log.i("DroidScript", s);
}
function startServer()
{
var DroidScriptServer = Packages.comikit.droidscript.DroidScriptServer;
Server = DroidScriptServer.create();
Server.setPort(4042);
Server.setRequestHandler(function(method, uri, data) {
// TODO: Handle PUT and GET, look for action in request (eval or run).
// TODO: Add save and get script.
// URI=/favicon.ico
log("METHOD=" + method + " URI=" + uri + " DATA=" + data);
if (("PUT" == method) && (uri.length() > 5) && ("/eval/" == uri.substring(0, 6)))
{
return Activity.eval(data);
}
if (("PUT" == method) && (uri.length() > 4) && ("/run/" == uri.substring(0, 5)))
{
var intent = new Intent();
intent.setClassName(Activity, "comikit.droidscript.DroidScriptActivity");
intent.putExtra("Script", data);
Activity.startActivity(intent);
return;
}
if (("GET" == method) && (uri.length() > 5) && ("/eval/" == uri.substring(0, 6)))
{
return Activity.eval(uri.substring(6));
}
if (("GET" == method) && (uri.length() > 5) && ("/hello" == uri.substring(0, 6)))
{
return "Welcome to the wonderful world of DroidScript!";
}
return "Unknown request";
});
Server.startServer();
}
function stopServer()
{
Server.stopServer();
}