WebServices
HTTP Post service to insert Trips and Readings to the server, a upload service
Input:
- service URL http://server:port/drunkendroid/trip/{IMEI}
- eg. http://localhost:8182/drunkendroid/trip/1234557
Each events tag can contain multiple event tags with sub tags, trip tags are mandatory, except endDateTime which can be omitted. a trip does not have to contain any events or event tags.
IMEI : International Mobile Equipment Identity
The HTTP envelope should contain a XML document with a structure like this:
<?xml version="1.0" encoding="UTF-8">
<trip>
<events>
<event>
<eventType>reading</eventType>
<dateTime>1255816133</dateTime>
<longitude>14.502362</longitude>
<latitude>35.908422</latitude>
<data>
<mood>124</mood>
</data
</event>
</events>
<startDateTime>1255816133</startDateTime>
<endDateTime>1255816133</endDateTime>
<name>ginsaturday</name>
</trip>
response
This service returns the generatedTripId in a xml document included in the HTTP envelope.
<tripId>2343456</tripId>
HTTP Get service to acquire moodmap points from a given area and timespan
Input:
- service URL http://server:port/drunkendroid/moodmap/{startTimeStamp}/{endTimeStamp}/{latitude}/{longitude}/{xCoordMeters}/{yCoordMeters}
- eg. http://localhost:8182/drunkendroid/moodmap/130773960/131027900/35.923954/14.49002/1000/1000
xCoordMeters : the amount of meters from the cordinatepoint to expand the map on the x-axis both positive and negaive
yCoordMeters : same as above but with the y-axis
Returns:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<points>
<p value="234" long="14.487617755003868" lat="35.9232054039299" />
<p value="234" long="14.487617755003868" lat="35.9232054039299" />
<p value="234" long="14.487617755003868" lat="35.9232054039299" />
</points>
HTTP Post Event - addsEvent to trip
http://server:port/drunkendroid/trip/event/{IMEI}/{TripId}
the HTTP envelope should contain a xml-document with something like this
<?xml version="1.0" encoding="UTF-8">
<events>
<event>
<eventType>reading</eventType>
<timeStamp>1255816133</timeStamp>
<longtitude>14.502362</longtitude>
<latitude>35.908422</latitude>
<data>
<mood>123</mood>
</data>
</event>
</events>
an event can be either of type reading, sms, picture,calllog,video
the data tag can either contain a <mood> tag for the reading
<smscontent>bla bla bla </smscontent><sender>+345 23123231<sender><reciever>0045 231231</reciever> for the sms type
<binaryData></binaryData><encoding></encoding> for picture and video.
this service will respond with a statuscode in the HTTPheader : 200 for OK 500 for server error etc.
HTTP GET - Get Trip get a specific trip including it's events.
http://server:port/drunkendroid/trip/{IMEI}/{TripId}
no http envelope content
returns
<trip>
<events>
<event>
<eventType>reading</eventType>
<dateTime>1255816133</dateTime>
<longitude>14.502362</longitude>
<latitude>35.908422</latitude>
<data>
<mood>124</mood>
</data
</event>
<event>
....
</event>
etc
</events>
<startDateTime>1255816133</startDateTime>
<endDateTime>1255816133</endDateTime>
<name>ginsaturday</name>
</trip>
Possible error codes used by the WebServices
if an error occurs while parsing or preforming an action by the WebServices a http response will be sent back to the client containing a HTTP error code and an envelope containing an xml document with an explanation.
an xml response has this structure
<error> <code>1</code> <message>Payload not text/XML</message> </error>
the current error codes and xml responses are
CLIENT_ERROR_BAD_REQUEST = HTTP error 400
"Payload not text/XML.", "1"
CLIENT_ERROR_BAD_REQUEST = HTTP error 400
"Malformed XML.", "2"
CLIENT_ERROR_BAD_REQUEST = HTTP error 400
"Malformed Data in XML.", "3"
SERVER_ERROR_INTERNAL = HTTP error 500
"Error inserting data in database.", "4"
SERVER_ERROR_INTERNAL = HTTP error 500
"Error getting data from database.", "5"
SERVER_ERROR_INTERNAL = HTTP error 500
"Error creating XML response.", "6"
Different types of events
The different types of events that is returned from the server should look like this:
CallEvent:
<event>
<eventType>call</eventType>
<dateTime>1255816133</dateTime>
<latitude>35.908422</latitude>
<longitude>14.502362</longitude>
<data>
<-- IF INCOMING -->
<caller>0036577293610</caller>
<-- ELSE IF OUTGOING -->
<receiver>0036577104516</receiver>
<-- END IF -->
<endTime>1255817201</endTime>
</data
</event>
LocationEvent:
<event>
<eventType>location</eventType>
<dateTime>1255816133</dateTime>
<latitude>35.908422</latitude>
<longitude>14.502362</longitude>
</event>
MoodEvent:
<event>
<eventType>mood</eventType>
<dateTime>1255816133</dateTime>
<latitude>35.908422</latitude>
<longitude>14.502362</longitude>
<data>
<mood>124</mood>
</data
</event>
SMSEvent:
<event>
<eventType>sms</eventType>
<dateTime>1255816133</dateTime>
<latitude>35.908422</latitude>
<longitude>14.502362</longitude>
<data>
<-- IF INCOMING -->
<sender>0036577293610</sender>
<-- ELSE IF OUTGOING -->
<receiver>0036577104516</receiver>
<-- END IF -->
<message>Hi, bring two bottles of gin.</message>
</data
</event>