#!/usr/bin/python
import os
import sys
import urllib
from Ft.Xml.Domlette import NonvalidatingReader

def read_apikey():
    f = os.path.expanduser("~/.opencellid/apikey")
    fp = open(f, "r")
    ret = fp.readline().rstrip("\r\n")
    fp.close()
    return ret

def get_position(apikey, mcc, mnc, lac, cid):
    url = "http://www.opencellid.org/cell/get?key=%s&mcc=%s&mnc=%s&lac=%s&cellid=%s" % (apikey, mcc, mnc, lac, cid)
    u = urllib.urlopen(url)
    data = u.read()
    doc = NonvalidatingReader.parseString(data, "urn:bogus")
    for rsp in doc.xpath("/rsp"):
        stat = rsp.attributes[(None, "stat")].value
        if stat == "ok":
            for cell in rsp.xpath("./cell"):
                lat = cell.attributes[(None, "lat")].value
                lon = cell.attributes[(None, "lon")].value
                cid2 = cell.attributes[(None, "cellId")].value
                lac2 = cell.attributes[(None, "lac")].value
                if cid == cid2:
                    accuracy = "cid_match"
                elif lac == lac2:
                    accuracy = "lac_match"
                else:
                    accuracy = "unknown"
                return (accuracy, lat, lon)
    raise Exception("failed to parse cell/get response")

def main():
    apikey = read_apikey()
    mcc = sys.argv[1]
    mnc = sys.argv[2]
    lac = sys.argv[3]
    cid = sys.argv[4]
    pos = get_position(apikey, mcc, mnc, lac, cid)
    print("%s %s %s" % pos)

main()

