Merge pull request #14 from vietanh85/develop

Get events from Event Server.
diff --git a/predictionio/__init__.py b/predictionio/__init__.py
index 8f40a4f..f4db10c 100644
--- a/predictionio/__init__.py
+++ b/predictionio/__init__.py
@@ -286,6 +286,58 @@
     """Synchronouly get an event from Event Server."""
     return self.aget_event(event_id).get_response()
 
+  def aget_events(self, startTime=None, untilTime=None, entityType=None, entityId=None, limit=None, reversed=False):
+    """Asynchronouly get events from Event Server. (Getting events through the Event Server API is used for debugging and not recommended for production)
+
+    :param startTime: time in ISO8601 format. Return events with eventTime >= startTime.
+    :param untilTime: time in ISO8601 format. Return events with eventTime < untilTime.
+    :param entityId: String. The entityId. Return events for this entityId only.
+    :param limit: Integer. The number of record events returned. Default is 20. -1 to get all.
+    :param reversed: Boolean. Must be used with both entityType and entityId specified,
+      returns events in reversed chronological order. Default is false.
+
+    :returns:
+      AsyncRequest object.
+    """
+    qparam = {
+        "accessKey" : self.access_key,
+        "reversed": reversed
+      }
+
+    if startTime is not None:
+      qparam["startTime"] = startTime
+
+    if untilTime is not None:
+      qparam["untilTime"] = untilTime
+
+    if entityType is not None:
+      qparam["entityType"] = entityType
+
+    if entityId is not None:
+      qparam["entityId"] = entityId
+
+    if limit is not None:
+      qparam["limit"] = limit
+
+    if self.channel is not None:
+      qparam["channel"] = self.channel
+    path = "/events.json"
+    request = AsyncRequest("GET", path, **qparam)
+    request.set_rfunc(self._aget_resp)
+    self._connection.make_request(request)
+    return request
+
+  def get_events(self, startTime=None, untilTime=None, entityType=None, entityId=None, limit=None, reversed=False):
+    """Synchronouly get event from Event Server. (Getting events through the Event Server API is used for debugging and not recommended for production)"""
+    return self.aget_events(
+      startTime=startTime,
+      untilTime=untilTime,
+      entityType=entityType,
+      entityId=entityId,
+      limit=limit,
+      reversed=reversed
+    ).get_response()
+
   def adelete_event(self, event_id):
     """Asynchronouly delete an event from Event Server.