diff frontend/mfrontend/views/api.py @ 13:79cf8ca2a0e5

Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Fri, 01 Apr 2011 19:02:08 +0200
parents 69ecfe51d585
children df32c1d01b8d
line wrap: on
line diff
--- a/frontend/mfrontend/views/api.py	Sun Mar 27 17:13:44 2011 +0200
+++ b/frontend/mfrontend/views/api.py	Fri Apr 01 19:02:08 2011 +0200
@@ -1,22 +1,38 @@
 #!/usr/bin/python
 # -*- coding: utf-8 -*-
 
-from flask import jsonify, Module
+from flask import jsonify, Module, abort
 from mfrontend import db, utils, exceptions, decorators
 api = Module(__name__)
 
-@api.route('/getjob/')
-@decorators.login_required
+@api.route('/getjob/<apikey>/')
 def get_jobs():
+    if apikey != db.config.get('Basic', 'ApiKey'):
+        abort(403)
     return jsonify(jobs = db.get_jobs(None, None, None))
 
-@api.route('/getjob/<int:jobid>/')
-@decorators.login_required
-def get_job(jobid):
+@api.route('/getnextjob/<apikey>/')
+def get_first_waiting_job(apikey):
+    """ Zwraca w formacie JSON informacje o pierwszym
+        czekającym zadaniu.
+        @param apikey   Klucz API.
+        @return         Dane o zadaniu w formacie JSON.
+    """
+    if apikey != db.config.get('Basic', 'ApiKey'):
+        abort(403)
+    return jsonify(job = db.get_waiting_job())
+
+@api.route('/getjob/<apikey>/<int:jobid>/')
+def get_job(apikey, jobid):
     """ Zwraca w formacie JSON informacje o podanym zadaniu.
         Uwaga: użytkownik musi być zalogowany, aby móc pobrać
         informację o zadaniu.
         @param  jobid   Identyfikator żądanego zadania.
         @return         Informacje o zadaniu w formacie JSON.
     """
-    pass #TODO!
+    # jeśli klucz API jest niepoprawny, przerywamy
+    if apikey != db.config.get('Basic','ApiKey'):
+        abort(403)
+    # w innym przypadku zwracamy informacje o zadaniu
+    return jsonify(job = db.get_job_by_id(jobid))
+