Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion discovery-provider/src/api/v1/models/tracks.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,18 @@
"remixes": fields.Boolean,
},
)

premium_conditions = ns.model(
"premium_conditions",
{
"nft-collection": fields.String,
},
)
premium_content_signature = ns.model(
"premium_content_signature",
{"data": fields.String, "signature": fields.String},
)

track = ns.model(
"Track",
{
Expand Down Expand Up @@ -132,7 +138,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
),
},
)

Expand Down
7 changes: 4 additions & 3 deletions discovery-provider/src/premium_content/signature.py
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -19,7 +20,7 @@ class PremiumContentSignatureArgs(TypedDict):


class PremiumContentSignature(TypedDict):
data: PremiumContentSignatureData
data: str
signature: str


Expand All @@ -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}
18 changes: 11 additions & 7 deletions discovery-provider/src/premium_content/signature_unit_test.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
from datetime import datetime

from src.api_helpers import recover_wallet
Expand All @@ -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"]
2 changes: 2 additions & 0 deletions discovery-provider/src/queries/get_trending_tracks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions discovery-provider/src/queries/get_underground_trending.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
4 changes: 2 additions & 2 deletions discovery-provider/src/queries/query_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Comment thread
sddioulde marked this conversation as resolved.
if not premium_tracks:
return

Expand Down Expand Up @@ -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],
}
)

Expand Down