Example #1
0
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
    }
Example #2
0
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}
Example #3
0
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
Example #4
0
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
Example #5
0
    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)
Example #6
0
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
Example #7
0
    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)
Example #8
0
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}
Example #9
0
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}
Example #10
0
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}