def shortener(request): url = check_url( request.params.get('url'), request.registry.settings ) if len(url) >= 2046: # we only accept URL shorter or equal to 2046 characters # Index restriction in DynamoDB url_short = 'toolong' else: # DynamoDB v2 high-level abstraction try: table = get_dynamodb_table(table_name='shorturl') except Exception as e: raise exc.HTTPBadRequest('Error during connection %s' % e) url_short = _add_item(table, url) # Use env specific URLs if request.host not in ('api.geo.admin.ch', 'api3.geo.admin.ch'): host_url = make_api_url(request) + '/shorten/' else: host_url = ''.join((request.scheme, '://s.geo.admin.ch/')) return { 'shorturl': host_url + url_short }
def find_files(request, layerBodId, FilePattern): settings = request.registry.settings downloadFolder = ''.join((settings['zadara_dir'], layerBodId)) for filePath in glob.glob('/'.join((downloadFolder, FilePattern))): fileName = os.path.basename(filePath) fileSize = os.path.getsize(filePath) fileApiUrl = ''.join((make_api_url(request, True), '/downloads/', layerBodId, '/', fileName)) yield {'name': fileName, 'size': fileSize, 'url': fileApiUrl}
def _shorten_url(request, url): API3_SHORTEN_URL = make_api_url(request) + '/shorten.json?url=%s' try: resp = requests.get(API3_SHORTEN_URL % url) data = resp.json() return data['shorturl'] except: return url
def _shorten_url(request, url): API3_SHORTEN_URL = make_api_url(request) + '/shorten.json?url=%s' try: resp = requests.get(API3_SHORTEN_URL % url) data = resp.json() return data['shorturl'] except Exception: return url
def test_make_api_url(self): request = testing.DummyRequest() request.host = 'api3.geo.admin.ch' request.scheme = 'http' request.registry.settings = {} request.registry.settings['apache_base_path'] = 'main' api_url = make_api_url(request, agnostic=True) self.assertTrue(not api_url.startswith('http://')) self.assertTrue(api_url.startswith('//')) self.assertEqual(api_url, '//api3.geo.admin.ch') request.scheme = 'https' api_url = make_api_url(request) self.assertEqual(api_url, 'https://api3.geo.admin.ch') request.host = 'localhost:9000' request.scheme = 'http' api_url = make_api_url(request) self.assertEqual(api_url, api_url)
def _shorten_url(request, url): API3_SHORTEN_URL = make_api_url(request) + '/shorten.json?url=%s' try: h = httplib2.Http() resp, content = h.request(API3_SHORTEN_URL % url, 'GET') resp = json.loads(content) url = resp['shorturl'] return url except: return url
def find_files(request, layerBodId, FilePattern): settings = request.registry.settings downloadFolder = ''.join((settings['zadara_dir'], layerBodId)) for filePath in glob.glob('/'.join((downloadFolder, FilePattern))): fileName = os.path.basename(filePath) fileSize = os.path.getsize(filePath) fileApiUrl = ''.join( (make_api_url(request, True), '/downloads/', layerBodId, '/', fileName)) yield {'name': fileName, 'size': fileSize, 'url': fileApiUrl}
def shortener(request): url = request.params.get('url') if len(url) >= 2046: # we only accept URL shorter or equal to 2046 characters # Index restriction in DynamoDB url_short = 'toolong' else: # pragma: no cover url_short = check_url(url, request.registry.settings) # DynamoDB v2 high-level abstraction try: table = get_dynamodb_table(table_name='shorturl') except Exception as e: raise exc.HTTPInternalServerError('Error during connection %s' % e) url_short = _add_item(table, url) # Use env specific URLs if request.host not in ('api.geo.admin.ch', 'api3.geo.admin.ch'): host_url = make_api_url(request) + '/shorten/' else: host_url = ''.join((request.scheme, '://s.geo.admin.ch/')) return {'shorturl': host_url + url_short}
def shortener(request): url = check_url(request.params.get('url')) if len(url) >= 2046: # we only accept URL shorter or equal to 2046 characters # Index restriction in DynamoDB url_short = 'toolong' else: # DynamoDB v2 high-level abstraction try: table = Table('shorturl', connection=connect_to_region('eu-west-1')) except Exception as e: raise exc.HTTPBadRequest('Error during connection %s' % e) url_short = _add_item(table, url) # Use env specific URLs if request.host not in ('api.geo.admin.ch', 'api3.geo.admin.ch'): host_url = make_api_url(request) + '/shorten/' else: host_url = ''.join((request.scheme, '://s.geo.admin.ch/')) return {'shorturl': host_url + url_short}