From 087d07d0a4aa7fb1628d17106b7978bea2712843 Mon Sep 17 00:00:00 2001 From: Mark Costello Date: Fri, 26 Oct 2012 14:30:59 -0400 Subject: [PATCH 1/5] First commit of report structure --- zencoder/core.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/zencoder/core.py b/zencoder/core.py index f83fd32..5d6465b 100644 --- a/zencoder/core.py +++ b/zencoder/core.py @@ -202,6 +202,9 @@ def __init__(self, api_key=None, api_version=None, as_xml=False, timeout=None, t self.job = Job(*args, **kwargs) self.account = Account(*args, **kwargs) self.output = Output(*args, **kwargs) + self.report = None + if api_version == 'v2': + self.report = Report(*args, **kwargs) class Response(object): """ @@ -366,3 +369,21 @@ def delete(self, job_id): """ return self.cancel(job_id) +class Report(HTTPBackend): + def __init__(self, *args, **kwargs): + """ + Contains all API methods relating to Outputs. + """ + kwargs['resource_name'] = 'reports' + super(Report, self).__init__(*args, **kwargs) + + def details(self, start_date=None, end_date=None, grouping=None): + data = {} + if start_date: + data['from'] = start_date + if to: + data['to'] = end_date + if grouping: + data['grouping'] = grouping + url = self.base_url + '/reports/minutes' + self.get(url, data) From 44adb49a6f2008322f1920e0335d09b9c9db723d Mon Sep 17 00:00:00 2001 From: Mark Costello Date: Mon, 29 Oct 2012 11:52:09 -0400 Subject: [PATCH 2/5] Added a reports object to return Zencoder usage reports --- zencoder/core.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/zencoder/core.py b/zencoder/core.py index 5d6465b..8dbce78 100644 --- a/zencoder/core.py +++ b/zencoder/core.py @@ -117,7 +117,6 @@ def get(self, url, data=None): if data: params = urlencode(data) url = '?'.join([url, params]) - response, content = self.http.request(url, method="GET", headers=self.headers) return self.process(response, content) @@ -378,12 +377,18 @@ def __init__(self, *args, **kwargs): super(Report, self).__init__(*args, **kwargs) def details(self, start_date=None, end_date=None, grouping=None): - data = {} + """ + Gets a detailed Report + """ + data = {'api_key': self.api_key} if start_date: data['from'] = start_date - if to: + + if end_date: data['to'] = end_date + if grouping: data['grouping'] = grouping - url = self.base_url + '/reports/minutes' - self.get(url, data) + + url = self.base_url + '/minutes' + return self.get(url, data=data) From 475b185628bb072791d98accf60d9b3431852424 Mon Sep 17 00:00:00 2001 From: Mark Costello Date: Mon, 29 Oct 2012 11:55:19 -0400 Subject: [PATCH 3/5] Re-added linebreak --- zencoder/core.py | 1 + 1 file changed, 1 insertion(+) diff --git a/zencoder/core.py b/zencoder/core.py index 8dbce78..605f905 100644 --- a/zencoder/core.py +++ b/zencoder/core.py @@ -117,6 +117,7 @@ def get(self, url, data=None): if data: params = urlencode(data) url = '?'.join([url, params]) + response, content = self.http.request(url, method="GET", headers=self.headers) return self.process(response, content) From eede4fad04d8bf946cb9d401f83c177be1e81abe Mon Sep 17 00:00:00 2001 From: Mark Costello Date: Mon, 18 Feb 2013 16:28:36 -0500 Subject: [PATCH 4/5] Changes to reporting - pass in a start and end date in datetime format --- zencoder/core.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/zencoder/core.py b/zencoder/core.py index 605f905..5fe4176 100644 --- a/zencoder/core.py +++ b/zencoder/core.py @@ -1,6 +1,7 @@ import os import httplib2 from urllib import urlencode +from datetime import datetime # Note: I've seen this pattern for dealing with json in different versions of # python in a lot of modules -- if there's a better way, I'd love to use it. @@ -372,21 +373,28 @@ def delete(self, job_id): class Report(HTTPBackend): def __init__(self, *args, **kwargs): """ - Contains all API methods relating to Outputs. + Contains all API methods relating to Reports. """ kwargs['resource_name'] = 'reports' super(Report, self).__init__(*args, **kwargs) - def details(self, start_date=None, end_date=None, grouping=None): + def minutes(self, start_date=None, end_date=None, grouping=None): """ - Gets a detailed Report + Gets a detailed Report of encoded minutes and billable minutes + for a date range + @param start_date: Start date of report (If not submitted, + API defaults to 30 days ago) + @param end_date: End date of report (If not submitted, API defaults to + yesterday) + @param grouping: Minute usage for only one report grouping """ data = {'api_key': self.api_key} + date_format = '%Y-%m-%d' if start_date: - data['from'] = start_date + data['from'] = datetime.strftime(start_date, date_format).date() if end_date: - data['to'] = end_date + data['to'] = datetime.strftime(end_date, date_format).date() if grouping: data['grouping'] = grouping From 1566c6cd89a6021dd95a1744985df8dc9e5e1b1e Mon Sep 17 00:00:00 2001 From: Mark Costello Date: Tue, 19 Feb 2013 11:09:00 -0500 Subject: [PATCH 5/5] Incorrect call to date() after formatting date to string --- zencoder/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zencoder/core.py b/zencoder/core.py index 5fe4176..6416a3b 100644 --- a/zencoder/core.py +++ b/zencoder/core.py @@ -391,10 +391,10 @@ def minutes(self, start_date=None, end_date=None, grouping=None): data = {'api_key': self.api_key} date_format = '%Y-%m-%d' if start_date: - data['from'] = datetime.strftime(start_date, date_format).date() + data['from'] = datetime.strftime(start_date, date_format) if end_date: - data['to'] = datetime.strftime(end_date, date_format).date() + data['to'] = datetime.strftime(end_date, date_format) if grouping: data['grouping'] = grouping