Advanced Usage
Example 1: We are going to use our own server directory and url prefix instead
of settings.MEDIA_ROOT / settings.MEDIA_URL.
The example is going to use all default settings.SECURE_LINK_*
from nginx_secure_links.storages import FileStorage
storage = FileStorage(location='/var/www/personal_data/', base_url='/personal/')
storage.url('profile.pdf')
Example 2: We are going to use custom storage with all overridden settings.
from nginx_secure_links.storages import FileStorage
storage = FileStorage(
location='/var/www/personal_data/',
base_url='/personal/'
nginx_secret_key='91rdywY7d4494X',
expires_field_name='expires_timestamp',
token_field_name='hash',
private_prefixes=[],
public_prefixes=[],
expires_seconds=60 * 60, # 60min
) # all private
storage.url('profile.pdf') # /personal/profile.pdf?hash=mlkiuhbhu83d&expires_timestamp=2147483647
Example 3: FileStorage supports to use custom lifetime for each specific file.
The example is going to use all default settings.SECURE_LINK_*
from nginx_secure_links.storages import FileStorage
storage = FileStorage(location='/var/www/personal_data/', base_url='/personal/')
# link expires in 60 seconds
url1 = storage.url('profile.pdf', lifetime=60)
# link expires in 180 seconds
url2 = storage.url('profile.pdf', lifetime=60 * 3)
# link never expires
url3 = storage.url('profile.pdf', lifetime=0)