def InitiateMediaUpload(self, request, context): key = random_hex() created = now() expiry = created + timedelta(minutes=20) with session_scope() as session: upload = InitiatedUpload(key=key, created=created, expiry=expiry, initiator_user_id=context.user_id) session.add(upload) session.commit() req = media_pb2.UploadRequest( key=upload.key, type=media_pb2.UploadRequest.UploadType.IMAGE, created=Timestamp_from_datetime(upload.created), expiry=Timestamp_from_datetime(upload.expiry), max_width=2000, max_height=1600, ).SerializeToString() data = urlsafe_b64encode(req).decode("utf8") sig = urlsafe_b64encode(generate_hash_signature(req, config["MEDIA_SERVER_SECRET_KEY"])).decode("utf8") path = "upload?" + urlencode({"data": data, "sig": sig}) return api_pb2.InitiateMediaUploadRes( upload_url=urls.media_upload_url(path), expiry=Timestamp_from_datetime(expiry), )
def _generate_unsubscribe_link(payload): msg = payload.SerializeToString() sig = generate_hash_signature(message=msg, key=get_secret(UNSUBSCRIBE_KEY_NAME)) return urls.unsubscribe_link(payload=b64encode(msg), sig=b64encode(sig))