Skip to main content

Bulletproof attachment serving for Django Rest Framework.

Project description

Yediemin

A package for bulletproof attachment serving in Django Rest Framework.

Getting Started

Requirements

  • Nginx
  • Django Rest Framework
  • Session Authentication
  • Django Storages (S3)

Installation Steps

  1. Install package from PyPi.
pip install yediemin
  1. Add the view to urls.py
from yediemin import YedieminView

urlpatterns = [
    re_path(r'^yediemin/(?P<file_name>\S+)/$', YedieminView.as_view(), name='yediemin'),
]
  1. Configure Nginx. Place the configuration below under your server.
location /yediemin-files/ {
            internal;
            resolver 8.8.8.8;
            set $redirect_uri "$upstream_http_redirect_uri";

            proxy_buffering off;
            proxy_pass $redirect_uri;
}
  1. Use YedieminFileField in serializer for FileField.
from yediemin import YedieminFileField

class AttachmentSerializer(serializers.ModelSerializer):
    file = YedieminFileField()

    class Meta:
        model = Attachment
        fields = (
            "id",
            "file",
        )
  1. Use PrivateS3Boto3Storage for the field in models.py
from yediemin import PrivateS3Boto3Storage

class Attachment(models.Model):
    file = models.FileField(storage=PrivateS3Boto3Storage())
  1. Upload files to S3 with YedieminFileField. Yediemin requires presigned object url.

Settings

  • YEDIEMIN_HIDDEN_REDIRECT_PATH

Default: yediemin-files. It should be same with location in nginx configuration.

  • YEDIEMIN_AUTHENTICATION_CLASSES

Default: [rest_framework.authentication.SessionAuthentication]

  • YEDIEMIN_EXPIRE_IN

Default: 604800 seconds which is 1 week. This is the maximum limit provided by AWS. Using Query Parameters

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yediemin-0.2.0.tar.gz (4.4 kB view hashes)

Uploaded Source

Built Distribution

yediemin-0.2.0-py3-none-any.whl (5.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page