From 0af654d21a6b48631724c9745568810f895a4454 Mon Sep 17 00:00:00 2001 From: Saliou Diallo Date: Sat, 10 Sep 2022 23:09:28 -0400 Subject: [PATCH 1/3] Fix track ids after filtering premium tracks --- discovery-provider/src/queries/get_trending_tracks.py | 2 ++ discovery-provider/src/queries/get_underground_trending.py | 1 + 2 files changed, 3 insertions(+) diff --git a/discovery-provider/src/queries/get_trending_tracks.py b/discovery-provider/src/queries/get_trending_tracks.py index 4b285b7a957..bbde9220843 100644 --- a/discovery-provider/src/queries/get_trending_tracks.py +++ b/discovery-provider/src/queries/get_trending_tracks.py @@ -70,6 +70,7 @@ def generate_unpopulated_trending( # because of the filtering out of premium tracks if not should_apply_limit_early: tracks = tracks[:limit] + track_ids = [track["track_id"] for track in tracks] return (tracks, track_ids) @@ -129,6 +130,7 @@ def generate_unpopulated_trending_from_mat_views( # because of the filtering out of premium tracks if not should_apply_limit_early: tracks = tracks[:limit] + track_ids = [track["track_id"] for track in tracks] return (tracks, track_ids) diff --git a/discovery-provider/src/queries/get_underground_trending.py b/discovery-provider/src/queries/get_underground_trending.py index e63b4d30476..570551ecd69 100644 --- a/discovery-provider/src/queries/get_underground_trending.py +++ b/discovery-provider/src/queries/get_underground_trending.py @@ -218,6 +218,7 @@ def wrapped(): # because of the filtering out of premium tracks if not should_apply_limit_early: tracks = tracks[:UNDERGROUND_TRENDING_LENGTH] + track_ids = [track["track_id"] for track in tracks] return (tracks, track_ids) From d67459823f1128d1fdb5cb6d891fc0d96dc14647 Mon Sep 17 00:00:00 2001 From: Saliou Diallo Date: Sat, 10 Sep 2022 23:50:06 -0400 Subject: [PATCH 2/3] Update full track response model --- .../src/api/v1/models/tracks.py | 20 ++++++++++++++++++- .../src/queries/query_helpers.py | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/discovery-provider/src/api/v1/models/tracks.py b/discovery-provider/src/api/v1/models/tracks.py index 6908378d7da..b57b2b65437 100644 --- a/discovery-provider/src/api/v1/models/tracks.py +++ b/discovery-provider/src/api/v1/models/tracks.py @@ -70,12 +70,27 @@ "remixes": fields.Boolean, }, ) + premium_conditions = ns.model( "premium_conditions", { "nft-collection": fields.String, }, ) +premium_content_signature_data = ns.model( + "premium_content_signature_data", + { + "premium_content_id": fields.Integer(required=True), + "premium_content_type": fields.String(required=True), + "user_wallet": fields.String(required=True), + "timestamp": fields.Integer(required=True), + }, +) +premium_content_signature = ns.model( + "premium_content_signature", + {"data": fields.Nested(premium_content_signature_data), "signature": fields.String}, +) + track = ns.model( "Track", { @@ -132,7 +147,10 @@ "remix_of": fields.Nested(full_remix_parent), "is_available": fields.Boolean, "is_premium": fields.Boolean, - "premium_conditions": fields.Nested(premium_conditions), + "premium_conditions": fields.Nested(premium_conditions, allow_null=True), + "premium_content_signature": fields.Nested( + premium_content_signature, allow_null=True + ), }, ) diff --git a/discovery-provider/src/queries/query_helpers.py b/discovery-provider/src/queries/query_helpers.py index 4a5708bd080..301fa1f858e 100644 --- a/discovery-provider/src/queries/query_helpers.py +++ b/discovery-provider/src/queries/query_helpers.py @@ -499,7 +499,7 @@ def populate_track_metadata( def _populate_premium_track_metadata(session, tracks, current_user_id): - premium_tracks = filter(lambda track: track["is_premium"], tracks) + premium_tracks = list(filter(lambda track: track["is_premium"], tracks)) if not premium_tracks: return @@ -547,7 +547,7 @@ def _populate_premium_track_metadata(session, tracks, current_user_id): { "id": track_id, "type": "track", - "user_wallet": current_user_wallet, + "user_wallet": current_user_wallet[0], } ) From 267522ff3b62ed7c15e21347b347ec28e456d722 Mon Sep 17 00:00:00 2001 From: Saliou Diallo Date: Mon, 12 Sep 2022 15:07:18 -0400 Subject: [PATCH 3/3] Update returned premium content signature data --- discovery-provider/src/api/v1/models/tracks.py | 11 +---------- .../src/premium_content/signature.py | 7 ++++--- .../src/premium_content/signature_unit_test.py | 18 +++++++++++------- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/discovery-provider/src/api/v1/models/tracks.py b/discovery-provider/src/api/v1/models/tracks.py index b57b2b65437..2f1e2567796 100644 --- a/discovery-provider/src/api/v1/models/tracks.py +++ b/discovery-provider/src/api/v1/models/tracks.py @@ -77,18 +77,9 @@ "nft-collection": fields.String, }, ) -premium_content_signature_data = ns.model( - "premium_content_signature_data", - { - "premium_content_id": fields.Integer(required=True), - "premium_content_type": fields.String(required=True), - "user_wallet": fields.String(required=True), - "timestamp": fields.Integer(required=True), - }, -) premium_content_signature = ns.model( "premium_content_signature", - {"data": fields.Nested(premium_content_signature_data), "signature": fields.String}, + {"data": fields.String, "signature": fields.String}, ) track = ns.model( diff --git a/discovery-provider/src/premium_content/signature.py b/discovery-provider/src/premium_content/signature.py index 872e95a86f7..b32e93abe69 100644 --- a/discovery-provider/src/premium_content/signature.py +++ b/discovery-provider/src/premium_content/signature.py @@ -1,5 +1,6 @@ +import json from datetime import datetime -from typing import TypedDict, cast +from typing import TypedDict from src.api_helpers import generate_signature from src.premium_content.premium_content_types import PremiumContentType @@ -19,7 +20,7 @@ class PremiumContentSignatureArgs(TypedDict): class PremiumContentSignature(TypedDict): - data: PremiumContentSignatureData + data: str signature: str @@ -37,4 +38,4 @@ def get_premium_content_signature( "timestamp": _get_current_utc_timestamp_ms(), } signature = generate_signature(data) - return {"data": cast(PremiumContentSignatureData, data), "signature": signature} + return {"data": json.dumps(data), "signature": signature} diff --git a/discovery-provider/src/premium_content/signature_unit_test.py b/discovery-provider/src/premium_content/signature_unit_test.py index ff4371ed6a8..fc0ec3cf0bc 100644 --- a/discovery-provider/src/premium_content/signature_unit_test.py +++ b/discovery-provider/src/premium_content/signature_unit_test.py @@ -1,3 +1,4 @@ +import json from datetime import datetime from src.api_helpers import recover_wallet @@ -20,18 +21,21 @@ def test_signature(): "user_wallet": user_wallet, } ) + signature = result["signature"] + signature_data = result["data"] + signature_data_obj = json.loads(signature_data) after_ms = int(datetime.utcnow().timestamp() * 1000) - assert result["data"]["premium_content_id"] == premium_content_id - assert result["data"]["premium_content_type"] == premium_content_type - assert result["data"]["user_wallet"] == user_wallet - assert before_ms <= result["data"]["timestamp"] <= after_ms - assert len(result["signature"]) == 132 + assert signature_data_obj["premium_content_id"] == premium_content_id + assert signature_data_obj["premium_content_type"] == premium_content_type + assert signature_data_obj["user_wallet"] == user_wallet + assert before_ms <= signature_data_obj["timestamp"] <= after_ms + assert len(signature) == 132 discovery_node_wallet = recover_wallet( - result["data"], - result["signature"], + json.loads(signature_data), + signature, ) assert discovery_node_wallet == shared_config["delegate"]["owner_wallet"]