from src.queries.get_savers_for_track import get_savers_for_track from src.queries.get_tracks_including_unlisted import get_tracks_including_unlisted from src.queries.get_stems_of import get_stems_of from src.queries.get_remixes_of import get_remixes_of from src.queries.get_remix_track_parents import get_remix_track_parents from src.queries.get_trending_ids import get_trending_ids from src.queries.get_trending import TRENDING_LIMIT, TRENDING_TTL_SEC, get_trending logger = logging.getLogger(__name__) # Models & namespaces ns = Namespace('tracks', description='Track related operations') full_ns = Namespace('tracks', description='Full track operations') track_response = make_response("track_response", ns, fields.Nested(track)) full_track_response = make_full_response("full_track_response", full_ns, fields.Nested(track_full)) tracks_response = make_response("tracks_response", ns, fields.List(fields.Nested(track))) full_tracks_response = make_full_response( "full_tracks_response", full_ns, fields.List(fields.Nested(track_full))) # Get single track def get_single_track(track_id, current_user_id, endpoint_ns): args = { "id": [track_id], "with_users": True,
from src.api.v1.helpers import abort_not_found, decode_with_abort, extend_playlist, extend_track, make_full_response,\ make_response, success_response, search_parser, abort_bad_request_param, decode_string_id, \ extend_user, get_default_max, get_current_user_id from .models.tracks import track from src.queries.search_queries import SearchKind, search from src.utils.redis_cache import cache from src.utils.redis_metrics import record_metrics from src.queries.get_reposters_for_playlist import get_reposters_for_playlist from src.queries.get_savers_for_playlist import get_savers_for_playlist logger = logging.getLogger(__name__) ns = Namespace('playlists', description='Playlist related operations') full_ns = Namespace('playlists', description='Full playlist related operations') playlists_response = make_response("playlist_response", ns, fields.List(fields.Nested(playlist_model))) full_playlists_response = make_full_response("full_playlist_response", full_ns, fields.List(fields.Nested(full_playlist_model))) def get_playlist(playlist_id, current_user_id): """Returns a single playlist, or None""" args = { "playlist_id": [playlist_id], "with_users": True, "current_user_id": current_user_id } playlists = get_playlists(args) if playlists: return extend_playlist(playlists[0]) return None def get_tracks_for_playlist(playlist_id, current_user_id=None):
parse_bool_param, parse_unix_epoch_param, abort_bad_request_param from .models.metrics import route_metric, app_name_metric, app_name, plays_metric, \ genre_metric, route_trailing_metric, app_name_trailing_metric from src.queries.get_route_metrics import get_route_metrics from src.queries.get_app_name_metrics import get_app_name_metrics from src.queries.get_app_names import get_app_names from src.queries.get_trailing_metrics import get_monthly_trailing_route_metrics, \ get_trailing_app_metrics from src.utils.redis_cache import cache logger = logging.getLogger(__name__) ns = Namespace('metrics', description='Metrics related operations') route_metrics_response = make_response("metrics_reponse", ns, fields.List(fields.Nested(route_metric))) route_metrics_trailing_month_response = make_response("route_metrics_trailing_month_response", ns, fields.Nested(route_trailing_metric)) app_name_response = make_response("app_name_response", ns, fields.List(fields.Nested(app_name))) app_name_trailing_response = make_response("app_name_trailing_response", ns, fields.List(fields.Nested(app_name_trailing_metric))) app_name_metrics_response = make_response("app_name_metrics_response", ns, fields.List(fields.Nested(app_name_metric))) plays_metrics_response = make_response("plays_metrics", ns, fields.List(fields.Nested(plays_metric))) genre_metrics_response = make_response("genre_metrics", ns, fields.List(fields.Nested(genre_metric))) metrics_route_parser = reqparse.RequestParser() metrics_route_parser.add_argument('path', required=False) metrics_route_parser.add_argument('query_string', required=False) metrics_route_parser.add_argument('start_time', required=False, type=int) metrics_route_parser.add_argument('exact', required=False) metrics_route_parser.add_argument('limit', required=False, type=int) metrics_route_parser.add_argument('bucket_size', required=False) metrics_route_parser.add_argument('version', required=False, action='append')
from src.api.v1.models.users import user_model_full from src.queries.get_reposters_for_track import get_reposters_for_track from src.queries.get_savers_for_track import get_savers_for_track from src.queries.get_tracks_including_unlisted import get_tracks_including_unlisted from src.queries.get_stems_of import get_stems_of from src.queries.get_remixes_of import get_remixes_of from src.queries.get_remix_track_parents import get_remix_track_parents logger = logging.getLogger(__name__) # Models & namespaces ns = Namespace('tracks', description='Track related operations') full_ns = Namespace('tracks', description='Full track operations') track_response = make_response("track_response", ns, fields.Nested(track)) full_track_response = make_full_response( "full_track_response", full_ns, fields.Nested(track_full)) tracks_response = make_response( "tracks_response", ns, fields.List(fields.Nested(track))) full_tracks_response = make_full_response( "full_tracks_response", full_ns, fields.List(fields.Nested(track_full)) ) # Get single track def get_single_track(track_id, current_user_id, endpoint_ns): args = { "id": [track_id], "with_users": True,
from src.api.v1.helpers import abort_not_found, decode_with_abort, extend_activity, extend_favorite, extend_track, \ extend_user, format_limit, format_offset, get_current_user_id, make_full_response, make_response, search_parser, success_response, abort_bad_request_param, \ get_default_max, encode_int_id from .models.tracks import track, track_full from .models.activities import activity_model, activity_model_full from src.utils.redis_cache import cache from src.utils.redis_metrics import record_metrics from src.queries.get_top_genre_users import get_top_genre_users logger = logging.getLogger(__name__) ns = Namespace('users', description='User related operations') full_ns = Namespace('users', description='Full user operations') user_response = make_response("user_response", ns, fields.Nested(user_model)) full_user_response = make_full_response( "full_user_response", full_ns, fields.List(fields.Nested(user_model_full))) def get_single_user(user_id, current_user_id): args = {"id": [user_id], "current_user_id": current_user_id} users = get_users(args) if not users: abort_not_found(user_id, ns) user = extend_user(users[0]) return success_response(user) USER_ROUTE = "/<string:user_id>"
import logging # pylint: disable=C0302 from datetime import datetime from flask import Flask, Blueprint from flask_restx import Resource, Namespace, fields, reqparse from src import api_helpers from src.api.v1.helpers import make_response, success_response, to_dict from .models.metrics import route_metric, app_name_metric, app_name from src.queries.get_route_metrics import get_route_metrics from src.queries.get_app_name_metrics import get_app_name_metrics from src.queries.get_app_names import get_app_names logger = logging.getLogger(__name__) ns = Namespace('metrics', description='Metrics related operations') route_metrics_response = make_response( "metrics_reponse", ns, fields.List(fields.Nested(route_metric))) app_name_response = make_response("app_name_response", ns, fields.List(fields.Nested(app_name))) app_name_metrics_response = make_response( "app_name_metrics_response", ns, fields.List(fields.Nested(app_name_metric))) metrics_route_parser = reqparse.RequestParser() metrics_route_parser.add_argument('path', required=True) metrics_route_parser.add_argument('query_string', required=False) metrics_route_parser.add_argument('start_time', required=True, type=int) metrics_route_parser.add_argument('limit', required=False, type=int) metrics_route_parser.add_argument('version', required=False, action='append') @ns.route("/routes", doc=False)
from src.api.v1.helpers import abort_not_found, decode_with_abort, extend_activity, extend_favorite, extend_track, \ extend_user, format_limit, format_offset, get_current_user_id, make_full_response, make_response, search_parser, success_response, abort_bad_request_param, \ get_default_max from .models.tracks import track, track_full from .models.activities import activity_model, activity_model_full from src.utils.redis_cache import cache from src.utils.redis_metrics import record_metrics from src.queries.get_top_genre_users import get_top_genre_users logger = logging.getLogger(__name__) ns = Namespace('users', description='User related operations') full_ns = Namespace('users', description='Full user operations') user_response = make_response("user_response", ns, fields.Nested(user_model)) full_user_response = make_full_response( "full_user_response", full_ns, fields.List(fields.Nested(user_model_full))) def get_single_user(user_id, current_user_id): args = {"id": [user_id], "current_user_id": current_user_id} users = get_users(args) if not users: abort_not_found(user_id, ns) user = extend_user(users[0]) return success_response(user) USER_ROUTE = "/<string:user_id>"
get_reactions_parser = reqparse.RequestParser( argument_class=DescriptiveArgument) get_reactions_parser.add_argument( "type", required=False, description="The type of reactions for which to query.") get_reactions_parser.add_argument( "tx_signatures", required=True, action="split", description= "The `reacted_to` transaction id(s) of the reactions in question.", ) get_reactions_response = make_response("reactions", ns, fields.List(fields.Nested(reaction))) @ns.route("") class BulkReactions(Resource): @record_metrics @ns.doc( id="Bulk get Reactions", description="Gets reactions by transaction_id and type", responses={ 200: "Success", 400: "Bad request", 500: "Server error" }, ) @ns.expect(get_reactions_parser)
from src.utils import web3_provider from src.utils.auth_middleware import auth_middleware from src.utils.db_session import get_db_read_replica from src.utils.helpers import encode_int_id from src.utils.redis_cache import cache from src.utils.redis_metrics import record_metrics from .models.activities import activity_model, activity_model_full from .models.tracks import track, track_full logger = logging.getLogger(__name__) ns = Namespace("users", description="User related operations") full_ns = Namespace("users", description="Full user operations") user_response = make_response("user_response", ns, fields.Nested(user_model)) full_user_response = make_full_response( "full_user_response", full_ns, fields.List(fields.Nested(user_model_full)) ) def get_single_user(user_id, current_user_id): args = {"id": [user_id], "current_user_id": current_user_id} users = get_users(args) if not users: abort_not_found(user_id, ns) user = extend_user(users[0], current_user_id) return success_response(user) USER_ROUTE = "/<string:id>"
undisbursed_challenge, ) from src.queries.get_attestation import ( AttestationError, get_attestation, get_create_sender_attestation, ) from src.queries.get_undisbursed_challenges import get_undisbursed_challenges from src.utils.db_session import get_db_read_replica from src.utils.redis_cache import cache logger = logging.getLogger(__name__) ns = Namespace("challenges", description="Challenge related operations") attestation_response = make_response("attestation_reponse", ns, fields.Nested(attestation)) attest_route = "/<string:challenge_id>/attest" attest_parser = reqparse.RequestParser(argument_class=DescriptiveArgument) attest_parser.add_argument( "oracle", required=True, description="The address of a valid, registered Anti-Abuse Oracle", ) attest_parser.add_argument( "specifier", required=True, description="The specifier of the user challenge requiring the attestation", ) attest_parser.add_argument(
from src.queries.get_saves import get_saves from src.queries.get_users import get_users from src.queries.search_queries import SearchKind, search from flask_restx import Resource, Namespace, fields from src.queries.get_tracks import get_tracks from src.api.v1.helpers import abort_not_found, decode_with_abort, extend_favorite, extend_track, \ extend_user, make_response, search_parser, success_response from .models.tracks import track from src.utils.redis_cache import cache from src.utils.redis_metrics import record_metrics logger = logging.getLogger(__name__) ns = Namespace('users', description='User related operations') user_response = make_response("user_response", ns, fields.Nested(user_model)) @ns.route("/<string:user_id>") class User(Resource): @record_metrics @ns.doc(id="""Get User""", params={'user_id': 'A User ID'}, responses={ 200: 'Success', 400: 'Bad request', 500: 'Server error' }) @ns.marshal_with(user_response) @cache(ttl_sec=5) def get(self, user_id):