Allow for specifying the page size

Default to 25
Max of 100

Change-Id: Ic8dc5986f09ad7be95d37654abd71f89bf3516b0
diff --git a/client.py b/client.py
index 2c90c87..b2a058d 100644
--- a/client.py
+++ b/client.py
@@ -61,10 +61,12 @@
   def _Url(self, path):
     return urlparse.urljoin(self.url_prefix, path) + '/'
 
-  def ListTasks(self, page=1):
+  def ListTasks(self, page_size=25, page=1):
     """Fetches a list of tasks.
 
         Args:
+          page_size: the number of records to fetch
+                     per page(Default: 25, Maximum: 100)
           page: Which page of results to return.
 
         Returns:
@@ -73,9 +75,15 @@
         Raises:
           HTTPError: a 4XX client error or 5XX server error
                      response was returned.
+          ValueError: if page_size is less than or equal to 0
+                      or greater than 100
         """
+    self._CheckPageSize(page_size)
     r = requests.get(
-        self._Url('tasks'), headers=self.headers, params={
+        self._Url('tasks'),
+        headers=self.headers,
+        params={
+            'page_size': page_size,
             'page': page
         })
     r.raise_for_status()
@@ -158,22 +166,30 @@
       return r.json()
     return
 
-  def ListTaskInstances(self, page=1):
+  def ListTaskInstances(self, page_size=25, page=1):
     """Fetches a list of tasks.
 
         Args:
+          page_size: the number of records to fetch
+                     per page(Default: 25, Maximum: 100)
           page: Which page of results to return.
 
         Returns:
           A JSON encoded list of task instances.
 
         Raises:
-
           HTTPError: a 4XX client error or 5XX server error
                      response was returned.
+          ValueError: if page_size is less than or equal to 0
+                      or greater than 100
         """
+
+    self._CheckPageSize(page_size)
     r = requests.get(
-        self._Url('instances'), headers=self.headers, params={
+        self._Url('instances'),
+        headers=self.headers,
+        params={
+            'page_size': page_size,
             'page': page
         })
     r.raise_for_status()
@@ -196,3 +212,19 @@
         self._Url('instances/%d' % task_instance_id), headers=self.headers)
     r.raise_for_status()
     return r.json()
+
+  def _CheckPageSize(self, page_size):
+    """Helper function to check if page_size is within the range of:
+       0 < page_size <= 100.
+
+        Args:
+          page_size: An integer representing page size
+
+        Raises:
+          ValueError: if page_size is less than or equal to 0
+                      or greater than 100
+        """
+    if page_size <= 0:
+      raise ValueError("page_size must be greater than 0.")
+    elif page_size > 100:
+      raise ValueError("page_size is limited to a maximum of 100 records.")