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>