spullara / findmyiphone

Find your iPhone by scraping the MobileMe site and turning it into a simple REST API

This URL has Read+Write access

name age message
file README Fri Jul 03 13:25:50 -0700 2009 add copyright notice and apache license 2.0 [Samuel Pullara]
file pom.xml Fri Jul 03 12:35:36 -0700 2009 get it to compile and run the server [Samuel Pullara]
directory src/ Fri Jul 03 13:25:50 -0700 2009 add copyright notice and apache license 2.0 [Samuel Pullara]
README
   Copyright 2009, Sam Pullara

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License

Find My iPhone uses your MobileMe username and password to scrape the Apple MobileMe website in
order to retrieve the location of all your devices (right now they only support iPhone) and return
them to you in JSON format.  This is not a supported API by Apple and could change at any time.

In order to start the software you need Maven 2 installed. Then you can execute:

mvn tomcat:run

This will start a local web server.  Then you can go to the URL:

http://localhost:8080/findmyiphone/

A form will be displayed asking for your username and password.  Submitting them will
execute the API just as if you called it from a programmatic client with the form:

http://localhost:8080/findmyiphone/find?username=...&password=...

This will return a result in JSON format that looks like:

{
   "..deviceid..":
   {"isLocationAvailable":true,"longitude":-122,"accuracy":84.268457,"time":"12:10 PM","isOldLocationResult":true,
   "isRecent":true,"statusString":"locate status available","status":1,"isLocateFinished":false,
   "latitude":37,"date":"July 3, 2009","isAccurate":false},
   ".. another device id..":
   {"noLocation":true,"statusString":"locate status available","status":1}
}

You may need to execute the API several times over a few minutes until it finishes locating the device.

Sam