| Index: sitescripts/oauth2dl/test/dummy_wsgi_app.py |
| diff --git a/sitescripts/oauth2dl/test/dummy_wsgi_app.py b/sitescripts/oauth2dl/test/dummy_wsgi_app.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b2ba12a588bcbefef732e1d7ffc0b9b4a75a7549 |
| --- /dev/null |
| +++ b/sitescripts/oauth2dl/test/dummy_wsgi_app.py |
| @@ -0,0 +1,95 @@ |
| +# This file is part of the Adblock Plus web scripts, |
| +# Copyright (C) 2006-present eyeo GmbH |
| +# |
| +# Adblock Plus is free software: you can redistribute it and/or modify |
| +# it under the terms of the GNU General Public License version 3 as |
| +# published by the Free Software Foundation. |
| +# |
| +# Adblock Plus is distributed in the hope that it will be useful, |
| +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| +# GNU General Public License for more details. |
| +# |
| +# You should have received a copy of the GNU General Public License |
| +# along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| + |
| +import json |
| +import re |
| +from urlparse import parse_qs |
| + |
| +from wsgiref.simple_server import make_server |
| + |
| +_AUTH_RESPONSE = { |
| + 'access_token': '1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M', |
| + 'token_type': 'Bearer', |
| + 'expires_in': 3600, |
| +} |
| + |
| +_NOT_FOUND_RESPONSE = { |
| + 'error': { |
| + 'errors': [{ |
| + 'domain': 'global', |
| + 'reason': 'notFound', |
| + 'message': 'File not found: {}', |
| + 'locationType': 'parameter', |
| + 'location': 'fileId', |
| + }], |
| + 'code': '404', |
| + 'message': 'File not found: {}', |
| + }, |
| +} |
| + |
| + |
| +def download(environ, start_response): |
| + """Send a file from a given path to the client.""" |
| + d = parse_qs(environ['QUERY_STRING']) |
| + path = d.get('path') |
| + headers = list() |
| + try: |
| + file = open(path[0], 'rb') |
| + start_response('200 OK', headers) |
| + if 'wsgi.file_wrapper' in environ: |
| + return environ['wsgi.file_wrapper'](file, 1024) |
| + |
| + return iter(lambda: file.read(1024), '') |
| + except IOError: |
| + response = _NOT_FOUND_RESPONSE |
| + response['error']['errors'][0]['message'] = \ |
| + response['error']['errors'][0]['message'].format(path) |
| + response['error']['message'] = \ |
| + response['error']['message'].format(path) |
| + |
| + headers = [('content-type', 'text/plain')] |
| + start_response('404 NOT FOUND', headers) |
| + return [json.dumps(response, encoding='utf-8')] |
| + |
| + |
| +def auth(environ, start_response): |
| + """Simulate a successful authentication using Google Oauth2.""" |
| + headers = [('content-type', 'application/json')] |
| + response = json.dumps(_AUTH_RESPONSE, encoding='utf-8') |
| + |
| + start_response('200 OK', headers) |
| + |
| + return [response] |
| + |
| + |
| +_URLS = [ |
| + (r'oauth2/v4/token/?$', auth), |
| + (r'download/?$', download), |
| +] |
| + |
| + |
| +def main(environ, start_response): |
| + """Serve as ain entry point for the dummy google API.""" |
| + path = environ.get('PATH_INFO', '').lstrip('/') |
| + for regex, callback in _URLS: |
| + match = re.search(regex, path) |
| + if match is not None: |
| + environ['myapp.url_args'] = match.groups() |
| + return callback(environ, start_response) |
| + |
| + |
| +if __name__ == '__main__': |
| + app = make_server('localhost', 8080, main) |
| + app.serve_forever() |