dev@locazia: fix image content metadata
This commit is contained in:
parent
d571281b51
commit
4c0d6be3b1
|
|
@ -6,8 +6,18 @@ from app.core._secrets import hot_seed
|
||||||
from app.core.logger import make_log
|
from app.core.logger import make_log
|
||||||
from app.core.models.keys import KnownKey
|
from app.core.models.keys import KnownKey
|
||||||
from app.core.models._telegram.wrapped_bot import Wrapped_CBotChat
|
from app.core.models._telegram.wrapped_bot import Wrapped_CBotChat
|
||||||
|
from app.core.models.user_activity import UserActivity
|
||||||
from app.core.models.user import User
|
from app.core.models.user import User
|
||||||
from app.core.storage import Session
|
from app.core.storage import Session
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
|
||||||
|
def attach_headers(response):
|
||||||
|
response.headers["Access-Control-Allow-Origin"] = "*"
|
||||||
|
response.headers["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS"
|
||||||
|
response.headers["Access-Control-Allow-Headers"] = "Origin, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site"
|
||||||
|
response.headers["Access-Control-Allow-Credentials"] = "true"
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
async def try_authorization(request):
|
async def try_authorization(request):
|
||||||
|
|
@ -59,6 +69,38 @@ async def try_authorization(request):
|
||||||
request.ctx.user_uploader_wrapper = Wrapped_CBotChat(request.app.ctx.memory._telegram_bot, chat_id=user.telegram_id, db_session=request.ctx.db_session)
|
request.ctx.user_uploader_wrapper = Wrapped_CBotChat(request.app.ctx.memory._telegram_bot, chat_id=user.telegram_id, db_session=request.ctx.db_session)
|
||||||
request.ctx.user_client_wrapper = Wrapped_CBotChat(request.app.ctx.memory._client_telegram_bot, chat_id=user.telegram_id, db_session=request.ctx.db_session)
|
request.ctx.user_client_wrapper = Wrapped_CBotChat(request.app.ctx.memory._client_telegram_bot, chat_id=user.telegram_id, db_session=request.ctx.db_session)
|
||||||
|
|
||||||
|
activity_meta = {}
|
||||||
|
try:
|
||||||
|
activity_meta["path"] = request.path
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
activity_meta["method"] = request.method
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
activity_meta["ip"] = (request.headers['X-Forwarded-for'] if 'X-Forwarded-for' in request.headers else None) \
|
||||||
|
or request.remote_addr or request.ip
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
activity_meta["headers"] = dict(request.headers)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
new_user_activity = UserActivity(
|
||||||
|
type="API_V1_REQUEST",
|
||||||
|
meta=activity_meta,
|
||||||
|
user_id=user.id,
|
||||||
|
user_ip=request.ip,
|
||||||
|
created=datetime.now()
|
||||||
|
)
|
||||||
|
request.ctx.db_session.add(new_user_activity)
|
||||||
|
request.ctx.db_session.commit()
|
||||||
|
|
||||||
|
|
||||||
async def try_service_authorization(request):
|
async def try_service_authorization(request):
|
||||||
signature = request.headers.get('X-Service-Signature')
|
signature = request.headers.get('X-Service-Signature')
|
||||||
|
|
@ -76,12 +118,15 @@ async def try_service_authorization(request):
|
||||||
|
|
||||||
|
|
||||||
async def attach_user_to_request(request):
|
async def attach_user_to_request(request):
|
||||||
|
if request.method == 'OPTIONS':
|
||||||
|
return attach_headers(sanic_response.text("OK"))
|
||||||
|
|
||||||
|
request.ctx.db_session = Session()
|
||||||
request.ctx.verified_hash = None
|
request.ctx.verified_hash = None
|
||||||
request.ctx.user = None
|
request.ctx.user = None
|
||||||
request.ctx.user_key = None
|
request.ctx.user_key = None
|
||||||
request.ctx.user_uploader_wrapper = None
|
request.ctx.user_uploader_wrapper = Wrapped_CBotChat(request.app.ctx.memory._telegram_bot, db_session=request.ctx.db_session)
|
||||||
request.ctx.user_client_wrapper = None
|
request.ctx.user_client_wrapper = Wrapped_CBotChat(request.app.ctx.memory._client_telegram_bot, db_session=request.ctx.db_session)
|
||||||
request.ctx.db_session = Session()
|
|
||||||
await try_authorization(request)
|
await try_authorization(request)
|
||||||
await try_service_authorization(request)
|
await try_service_authorization(request)
|
||||||
|
|
||||||
|
|
@ -100,8 +145,5 @@ async def close_request_handler(request, response):
|
||||||
|
|
||||||
async def close_db_session(request, response):
|
async def close_db_session(request, response):
|
||||||
request, response = await close_request_handler(request, response)
|
request, response = await close_request_handler(request, response)
|
||||||
response.headers["Access-Control-Allow-Origin"] = "*"
|
response = attach_headers(response)
|
||||||
response.headers["Access-Control-Allow-Methods"] = "GET, POST, OPTIONS"
|
|
||||||
response.headers["Access-Control-Allow-Headers"] = "Origin, Content-Type, Accept, Authorization, Referer, User-Agent, Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site"
|
|
||||||
response.headers["Access-Control-Allow-Credentials"] = "true"
|
|
||||||
return response
|
return response
|
||||||
|
|
|
||||||
|
|
@ -77,8 +77,8 @@ async def s_api_v1_blockchain_send_new_content_message(request):
|
||||||
|
|
||||||
metadata_content = await create_metadata_for_item(
|
metadata_content = await create_metadata_for_item(
|
||||||
request.ctx.db_session,
|
request.ctx.db_session,
|
||||||
title=request.json['title'],
|
title=f"{', '.join(request.json['authors'])} - {request.json['title']}",
|
||||||
cover_url=request.json['image'],
|
cover_url=f"{PROJECT_HOST}/api/v1/storage/{image_content_cid.serialize_v2()}" if image_content_cid else None,
|
||||||
authors=request.json['authors']
|
authors=request.json['authors']
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -108,8 +108,8 @@ async def s_api_v1_blockchain_send_new_content_message(request):
|
||||||
.store_ref(
|
.store_ref(
|
||||||
begin_cell()
|
begin_cell()
|
||||||
.store_coins(int(request.json['price']))
|
.store_coins(int(request.json['price']))
|
||||||
.store_coins(int(1000000 * 10 ** 9))
|
.store_coins(int(100000000 * 10 ** 9))
|
||||||
.store_coins(int(5000000 * 10 ** 9))
|
.store_coins(int(500000000 * 10 ** 9))
|
||||||
.end_cell()
|
.end_cell()
|
||||||
)
|
)
|
||||||
.store_maybe_ref(royalties_dict.end_dict())
|
.store_maybe_ref(royalties_dict.end_dict())
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ async def create_metadata_for_item(
|
||||||
# 'trait_type': 'Artist',
|
# 'trait_type': 'Artist',
|
||||||
# 'value': 'Unknown'
|
# 'value': 'Unknown'
|
||||||
# },
|
# },
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
if cover_url:
|
if cover_url:
|
||||||
item_metadata['image'] = cover_url
|
item_metadata['image'] = cover_url
|
||||||
|
|
@ -73,8 +73,6 @@ async def create_metadata_for_item(
|
||||||
''.join([_a_ch for _a_ch in _a if len(_a_ch.encode()) == 1]) for _a in (authors or [])[:500]
|
''.join([_a_ch for _a_ch in _a if len(_a_ch.encode()) == 1]) for _a in (authors or [])[:500]
|
||||||
]
|
]
|
||||||
|
|
||||||
signer = Signer(hot_seed)
|
|
||||||
|
|
||||||
# Upload file
|
# Upload file
|
||||||
metadata_bin = json.dumps(item_metadata).encode()
|
metadata_bin = json.dumps(item_metadata).encode()
|
||||||
metadata_hash = sha256(metadata_bin).digest()
|
metadata_hash = sha256(metadata_bin).digest()
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,4 @@ from app.core.models.transaction import UserBalance, InternalTransaction
|
||||||
from app.core.models.user import User
|
from app.core.models.user import User
|
||||||
from app.core.models.wallet_connection import WalletConnection
|
from app.core.models.wallet_connection import WalletConnection
|
||||||
from app.core.models.messages import KnownTelegramMessage
|
from app.core.models.messages import KnownTelegramMessage
|
||||||
|
from app.core.models.user_activity import UserActivity
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
|
||||||
|
from sqlalchemy import Column, BigInteger, Integer, String, ForeignKey, DateTime, JSON, Boolean
|
||||||
|
from sqlalchemy.orm import relationship
|
||||||
|
from .base import AlchemyBase
|
||||||
|
|
||||||
|
|
||||||
|
class UserActivity(AlchemyBase):
|
||||||
|
__tablename__ = 'users_activity'
|
||||||
|
|
||||||
|
id = Column(Integer, autoincrement=True, primary_key=True)
|
||||||
|
type = Column(String(64), nullable=False)
|
||||||
|
meta = Column(JSON, nullable=False, default={})
|
||||||
|
|
||||||
|
user_id = Column(Integer, ForeignKey('users.id'), nullable=False)
|
||||||
|
user_ip = Column(String(64), nullable=True)
|
||||||
|
created = Column(DateTime, nullable=False, default=0)
|
||||||
|
|
||||||
|
user = relationship('User', uselist=False, foreign_keys=[user_id])
|
||||||
Loading…
Reference in New Issue