From 1427caaa76a9acd68a5fae13b5881306718799be Mon Sep 17 00:00:00 2001 From: Aaron Static Date: Wed, 30 Jun 2010 23:45:09 +1000 Subject: [PATCH] Op Timer API --- api/handlers.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ api/urls.py | 2 ++ settings.py | 3 +++ 3 files changed, 51 insertions(+) mode change 100644 => 100755 api/handlers.py mode change 100644 => 100755 api/urls.py mode change 100644 => 100755 settings.py diff --git a/api/handlers.py b/api/handlers.py old mode 100644 new mode 100755 index c124edf..e5b24ff --- a/api/handlers.py +++ b/api/handlers.py @@ -16,6 +16,11 @@ from eve_proxy.models import CachedDocument from eve_api.models import EVEAccount from sso.models import ServiceAccount, Service +from settings import FULL_API_USER_ID +from settings import FULL_API_CHARACTER_ID + +from xml.dom import minidom + class UserHandler(BaseHandler): allowed_methods = ('GET') @@ -110,4 +115,45 @@ class EveAPIProxyHandler(BaseHandler): cached_doc = CachedDocument.objects.api_query(url_path, params, exceptions=False) return HttpResponse(cached_doc.body) + +class OpTimerHandler(BaseHandler): + allowed_methods = ('GET') + + def read(self, request, id=None): + obj = get_object_or_404(EVEAccount, user=FULL_API_USER_ID) + + params = {'userID':obj.id,'apiKey':obj.api_key,'characterID':FULL_API_CHARACTER_ID} + + cached_doc = CachedDocument.objects.api_query('/char/UpcomingCalendarEvents.xml.aspx', params, exceptions=False) + + dom = minidom.parseString(cached_doc.body.encode('utf-8')) + enode = dom.getElementsByTagName('error') + if enode: + return {'error':True} + + events = [] + events_node_children = dom.getElementsByTagName('rowset')[0].childNodes + + for node in events_node_children: + if node.nodeType == 1: + ownerID = node.getAttribute('ownerID') + print ownerID + if ownerID != '1': + date = node.getAttribute('eventDate') + dt = datetime.strptime(date,'%Y-%m-%d %H:%M:%S') + now = datetime.utcnow() + startsIn = int(dt.strftime('%s')) - int(now.strftime('%s')) + event = { + 'startsIn': startsIn, + 'eventID': node.getAttribute('eventID'), + 'ownerName': node.getAttribute('ownerName'), + 'eventDate': date, + 'eventTitle': node.getAttribute('eventTitle'), + 'duration': node.getAttribute('duration'), + 'isImportant': node.getAttribute('importance'), + 'eventText': node.getAttribute('eventText') + } + events.append(event) + + return {'ops':events} diff --git a/api/urls.py b/api/urls.py old mode 100644 new mode 100755 index b5d94a8..d60a194 --- a/api/urls.py +++ b/api/urls.py @@ -13,12 +13,14 @@ user_resource = Resource(handler=UserHandler, **oauth) login_resource = Resource(handler=LoginHandler, **noauth) eveapi_resource = Resource(handler=EveAPIHandler, **apikeyauth) eveapiproxy_resource = Resource(handler=EveAPIProxyHandler, **apikeyauth) +optimer_resource = Resource(handler=OpTimerHandler, **apikeyauth) urlpatterns = patterns('', url(r'^user/$', user_resource), url(r'^login/$', login_resource), url(r'^eveapi/$', eveapi_resource), url(r'^eveapi/', eveapiproxy_resource, name='api-eveapiproxy'), + url(r'^optimer/$', optimer_resource), ) urlpatterns += patterns('piston.authentication', diff --git a/settings.py b/settings.py old mode 100644 new mode 100755 index 01d6fda..69fc496 --- a/settings.py +++ b/settings.py @@ -123,6 +123,9 @@ REDDIT_PASSWD = '' HR_STAFF_GROUP = 'HR Staff' +FULL_API_USER_ID = 1 +FULL_API_CHARACTER_ID = 217608501 + # try and import local settings try: from settingslocal import *