Skip to content

Commit

Permalink
Add trending/underground non-full endpoint (#3944)
Browse files Browse the repository at this point in the history
* Add trending/underground non-full API endpoint

* Generate libs types
  • Loading branch information
michellebrier committed Sep 28, 2022
1 parent fb42c3b commit d99a1f8
Show file tree
Hide file tree
Showing 2 changed files with 124 additions and 0 deletions.
46 changes: 46 additions & 0 deletions discovery-provider/src/api/v1/tracks.py
Expand Up @@ -22,6 +22,7 @@
get_encoded_track_id,
make_full_response,
make_response,
pagination_parser,
pagination_with_current_user_parser,
search_parser,
stem_from_track,
Expand Down Expand Up @@ -560,6 +561,51 @@ def get(self, version):
return success_response(trending_tracks)


@ns.route(
"/trending/underground",
defaults={
"version": DEFAULT_TRENDING_VERSIONS[TrendingType.UNDERGROUND_TRACKS].name
},
strict_slashes=False,
doc={
"get": {
"id": """Get Underground Trending Tracks""",
"description": """Gets the top 100 trending underground tracks on Audius""",
}
},
)
@ns.route(
"/trending/underground/<string:version>",
doc={
"get": {
"id": "Get Underground Trending Tracks With Version",
"description": "Gets the top 100 trending underground tracks on Audius using a given trending strategy version",
"params": {"version": "The strategy version of trending to user"},
}
},
)
class UndergroundTrending(Resource):
@record_metrics
@ns.expect(pagination_parser)
@ns.marshal_with(tracks_response)
def get(self, version):
underground_trending_versions = trending_strategy_factory.get_versions_for_type(
TrendingType.UNDERGROUND_TRACKS
).keys()
version_list = list(
filter(lambda v: v.name == version, underground_trending_versions)
)
if not version_list:
abort_bad_path_param("version", ns)

args = pagination_parser.parse_args()
strategy = trending_strategy_factory.get_strategy(
TrendingType.UNDERGROUND_TRACKS, version_list[0]
)
trending_tracks = get_underground_trending(request, args, strategy)
return success_response(trending_tracks)


@full_ns.route(
"/trending/underground",
defaults={
Expand Down
78 changes: 78 additions & 0 deletions libs/src/sdk/api/generated/default/apis/TracksApi.ts
Expand Up @@ -56,6 +56,32 @@ export interface GetTrendingTracksRequest {
time?: GetTrendingTracksTimeEnum;
}

export interface GetUndergroundTrendingTracksRequest {
/**
* The number of items to skip. Useful for pagination (page number * limit)
*/
offset?: number;
/**
* The number of items to fetch
*/
limit?: number;
}

export interface GetUndergroundTrendingTracksWithVersionRequest {
/**
* The strategy version of trending to user
*/
version: string;
/**
* The number of items to skip. Useful for pagination (page number * limit)
*/
offset?: number;
/**
* The number of items to fetch
*/
limit?: number;
}

export interface SearchTracksRequest {
/**
* The search query
Expand Down Expand Up @@ -147,6 +173,58 @@ export class TracksApi extends runtime.BaseAPI {
}) as Promise<NonNullable<TracksResponse["data"]>>;
}

/**
* Gets the top 100 trending underground tracks on Audius
*/
async getUndergroundTrendingTracks(requestParameters: GetUndergroundTrendingTracksRequest = {}): Promise<NonNullable<TracksResponse["data"]>> {
const queryParameters: any = {};

if (requestParameters.offset !== undefined) {
queryParameters['offset'] = requestParameters.offset;
}

if (requestParameters.limit !== undefined) {
queryParameters['limit'] = requestParameters.limit;
}

const headerParameters: runtime.HTTPHeaders = {};

return this.request({
path: `/tracks/trending/underground`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
}) as Promise<NonNullable<TracksResponse["data"]>>;
}

/**
* Gets the top 100 trending underground tracks on Audius using a given trending strategy version
*/
async getUndergroundTrendingTracksWithVersion(requestParameters: GetUndergroundTrendingTracksWithVersionRequest): Promise<NonNullable<TracksResponse["data"]>> {
if (requestParameters.version === null || requestParameters.version === undefined) {
throw new runtime.RequiredError('version','Required parameter requestParameters.version was null or undefined when calling getUndergroundTrendingTracksWithVersion.');
}

const queryParameters: any = {};

if (requestParameters.offset !== undefined) {
queryParameters['offset'] = requestParameters.offset;
}

if (requestParameters.limit !== undefined) {
queryParameters['limit'] = requestParameters.limit;
}

const headerParameters: runtime.HTTPHeaders = {};

return this.request({
path: `/tracks/trending/underground/{version}`.replace(`{${"version"}}`, encodeURIComponent(String(requestParameters.version))),
method: 'GET',
headers: headerParameters,
query: queryParameters,
}) as Promise<NonNullable<TracksResponse["data"]>>;
}

/**
* Search for a track or tracks
*/
Expand Down

0 comments on commit d99a1f8

Please sign in to comment.