import allure from ui_automation_framework.api.api_client import ApiClient from typing import List class ApiDataProvider(ApiClient): @allure.step("Getting response from /gate-api/charts/top/") def get_charts_top(self, vendor, market, fields: List = None, order_by: List = None, limit=None): api_string = "/gate-api/charts/top/" resp = self.session.get( self.host_endpoint + api_string, headers=self.headers, params=dict(vendor=vendor, market=market, fields=fields, order_by=order_by, limit=limit), timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} return response @allure.step("Getting top artist and track from {vendor} chart") def get_artist_and_track_from_top_chart(self, vendor, market): test_data_chart = self.get_charts_top( vendor, market, fields=['is_sony', 'is_re_enter', 'trends', 'image_url', 'chart_date'], order_by=['position']) chart_artist_name = None chart_track_name = None for track in test_data_chart["body"]["tracks"]: if track["is_sony"]: chart_track_name = track["name"] chart_artist_name = track["artist"] break self.logger.info(f"Found '{chart_artist_name}' with '{chart_track_name}' track") return chart_artist_name.split(',')[0], chart_track_name # return only 1st artist name