Merge pull request #176 from cppalliance/static-content

WIP #153 Retrieving data from S3
This commit is contained in:
Lacey Williams Henschel
2023-04-04 09:24:37 -07:00
committed by GitHub
5 changed files with 54 additions and 5 deletions

View File

@@ -354,6 +354,12 @@ if not LOCAL_DEVELOPMENT:
DEFAULT_FILE_STORAGE = "core.storages.MediaStorage"
MEDIA_URL = f"{AWS_S3_ENDPOINT_URL}/{MEDIA_BUCKET_NAME}/"
AWS_ACCESS_KEY_ID = env("AWS_ACCESS_KEY_ID", default="changeme")
AWS_SECRET_ACCESS_KEY = env("AWS_SECRET_ACCESS_KEY", default="changeme")
BUCKET_NAME = env("BUCKET_NAME", default="changeme")
AWS_S3_ENDPOINT_URL = "s3.amazonaws.com"
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"
# Markdown content
BASE_CONTENT = env("BOOST_CONTENT_DIRECTORY", "/website")

View File

@@ -1,5 +1,8 @@
import boto3
import re
from django.conf import settings
from mistletoe import HTMLRenderer
from mistletoe.span_token import SpanToken
from pygments import highlight
@@ -8,6 +11,35 @@ from pygments.lexers import get_lexer_by_name as get_lexer, guess_lexer
from pygments.formatters.html import HtmlFormatter
def get_content_from_s3(key=None, bucket_name=None):
"""Get content from S3
Sample key:
'archives/boost_1_81_0/README.md'
Returns the decoded file contents if able
FIXME: This is a temporary solution to get the content from S3
and does not handle errors or anything unexpected with grace.
"""
if not key:
raise
if not bucket_name:
bucket_name = settings.BUCKET_NAME
client = boto3.client(
"s3",
aws_access_key_id=settings.AWS_ACCESS_KEY_ID,
aws_secret_access_key=settings.AWS_SECRET_ACCESS_KEY,
region_name="us-east-1",
)
response = client.get_object(Bucket=bucket_name, Key=key)
file_content = response["Body"].read().decode("utf-8")
return file_content
class Youtube(SpanToken):
"""
Span token for Youtube shortcodes

View File

@@ -15,3 +15,8 @@ DJANGO_DEBUG=1
SECRET_KEY="top-secret"
GITHUB_TOKEN="top-secret"
AWS_ACCESS_KEY_ID="changeme"
AWS_SECRET_ACCESS_KEY="changeme"
BUCKET_NAME="stage.boost.org"

View File

@@ -19,6 +19,7 @@ Pillow==9.4.0
django-storages
wheel==0.38.1
cryptography==39.0.1
boto3
# Logging
django-tracer
@@ -41,6 +42,7 @@ Faker
model_bakery
ipython
responses
minio
# Packaging
pip-tools==6.12.3

View File

@@ -25,7 +25,9 @@ billiard==3.6.4.0
black==22.3
# via -r ./requirements.in
boto3==1.17.68
# via django-bakery
# via
# -r ./requirements.in
# django-bakery
botocore==1.20.68
# via
# boto3
@@ -39,7 +41,9 @@ bumpversion==0.6.0
celery==5.2.2
# via -r ./requirements.in
certifi==2022.6.15
# via requests
# via
# minio
# requests
cffi==1.15.1
# via cryptography
charset-normalizer==2.1.0
@@ -171,6 +175,8 @@ marshmallow==3.11.1
# via environs
matplotlib-inline==0.1.3
# via ipython
minio==7.1.14
# via -r ./requirements.in
mistletoe==0.8.2
# via -r ./requirements.in
model-bakery==1.5.0
@@ -277,7 +283,6 @@ s3transfer==0.4.2
# via boto3
six==1.16.0
# via
# asttokens
# click-repl
# django-bakery
# django-rest-auth
@@ -297,7 +302,6 @@ tomli==2.0.1
# via
# black
# build
# pyproject-hooks
# pytest
traitlets==5.2.1.post0
# via
@@ -310,11 +314,11 @@ typing-extensions==4.5.0
urllib3==1.26.4
# via
# botocore
# minio
# requests
# responses
vine==5.0.0
# via
# amqp
# celery
# kombu
wcwidth==0.2.5