mirror of
https://github.com/wassname/flask-s3.git
synced 2026-07-02 16:40:06 +08:00
Make S3 URL style configurable
This commit is contained in:
+14
-2
@@ -33,8 +33,20 @@ def url_for(endpoint, **values):
|
||||
scheme = 'http'
|
||||
if app.config['S3_USE_HTTPS']:
|
||||
scheme = 'https'
|
||||
bucket_path = '%s.%s' % (app.config['S3_BUCKET_NAME'],
|
||||
app.config['S3_BUCKET_DOMAIN'])
|
||||
|
||||
if app.config['S3_URL_STYLE'] == 'host':
|
||||
url_format = '%(bucket_name)s.%(bucket_domain)s'
|
||||
elif app.config['S3_URL_STYLE'] == 'path':
|
||||
url_format = '%(bucket_domain)s/%(bucket_name)s'
|
||||
else:
|
||||
raise ValueError('Invalid S3 URL style: "%s"'
|
||||
% app.config['S3_URL_STYLE'])
|
||||
|
||||
bucket_path = url_format % {
|
||||
'bucket_name': app.config['S3_BUCKET_NAME'],
|
||||
'bucket_domain': app.config['S3_BUCKET_DOMAIN'],
|
||||
}
|
||||
|
||||
if app.config['S3_CDN_DOMAIN']:
|
||||
bucket_path = '%s' % app.config['S3_CDN_DOMAIN']
|
||||
urls = app.url_map.bind(bucket_path, url_scheme=scheme)
|
||||
|
||||
@@ -122,6 +122,18 @@ class UrlTests(unittest.TestCase):
|
||||
exp = 'https://foo.cloudfront.net/static/bah.js'
|
||||
self.assertEquals(self.client_get(ufs).data, exp)
|
||||
|
||||
def test_url_for_url_style_path(self):
|
||||
"""Tests that the URL returned uses the path style."""
|
||||
self.app.config['S3_URL_STYLE'] = 'path'
|
||||
ufs = "{{url_for('static', filename='bah.js')}}"
|
||||
exp = 'https://s3.amazonaws.com/foo/static/bah.js'
|
||||
self.assertEquals(self.client_get(ufs).data, exp)
|
||||
|
||||
def test_url_for_url_style_invalid(self):
|
||||
"""Tests that an exception is raised for invalid URL styles."""
|
||||
self.app.config['S3_URL_STYLE'] = 'balderdash'
|
||||
ufs = "{{url_for('static', filename='bah.js')}}"
|
||||
self.assertRaises(ValueError, self.client_get, ufs)
|
||||
|
||||
|
||||
class S3Tests(unittest.TestCase):
|
||||
|
||||
Reference in New Issue
Block a user