import allure from app.src.api.api_client import ApiClient from app.src.helpers.allure_helper import attach_response_info class DspApiClient(ApiClient): @allure.step("Call /dsp-api/analytics/v1/daily-and-weekly-streams-count data") def get_daily_and_weekly_streams_count(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/daily-and-weekly-streams-count?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Call /dsp-api/analytics/v1/weekly-streams-count data") def get_weekly_streams_count(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/weekly-streams-count?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Getting search results from /dsp-api/spotify/search") def search_tracks(self, *parameters, ignore_response_attaching=False): # api_string = "/dsp-api/spotify/search?" api_string = "/vendor-api/spotify/v1/search?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Getting latest date from /dsp-api/consumer_analytics/streams-latest-date") def get_latest_date_go(self, isrc, vendors=None, ignore_response_attaching=False): api_string = "/dsp-api/consumer_analytics/streams-latest-date?" resp = self.session.get(self.host_endpoint + api_string, params=dict(isrc=isrc, vendors=vendors), timeout=self.timeout) attach_response_info(resp, ignore_response_attaching) return resp.json()["date"] @allure.step("Getting global streams count from /dsp-api/delphi/total-streams-count-bulk") def get_global_streams_portal(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/delphi/total-streams-count-bulk?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Getting global streams count from /dsp-api/analytics/v1/total-streams-count?") def get_global_streams_go(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/total-streams-count?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Get Spotify demographics data from /dsp-api/delphi/spotify-demographics") def get_spotify_demographics_delphi(self, isrc, start_date, end_date, market, ignore_response_attaching=False): api_string = "/dsp-api/delphi/spotify-demographics" payload = { "items": [{"start": start_date, "end": end_date, "isrc": isrc}], "market": market, "combine_isrc": False, "timestamp": 1596622249220, } resp = self.session.post(self.host_endpoint + api_string, json=payload) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Get Apple demographics data from /dsp-api/delphi/apple-demographics") def get_apple_demographics_delphi(self, isrc, start_date, end_date, market, ignore_response_attaching=False): api_string = "/dsp-api/delphi/apple-demographics" payload = { "items": [{"start": start_date, "end": end_date, "isrc": isrc}], "market": market, "combine_isrc": False, "timestamp": 1596622249220, } resp = self.session.post(self.host_endpoint + api_string, json=payload) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("POST track playlists streams /dsp-api/analytics/v1/track-playlists-streams") def post_track_playlists_streams(self, payload, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/track-playlists-streams" payload = payload resp = self.session.post(self.host_endpoint + api_string, json=payload) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Getting streams data from /dsp-api/delphi/streams?") def get_delphi_streams(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/delphi/streams?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Call to /dsp-api/analytics/v1/streams-monitoring") def get_dsp_api_streams_monitoring(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/streams-monitoring?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Call to /dsp-api/analytics/v2/detailed-streams-graph") def get_dsp_api_detailed_graph_streams(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v2/detailed-streams-graph?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Call to /dsp-api/analytics/v1/streams-graph") def get_dsp_api_streams_graph(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/streams-graph?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Call to /dsp-api/analytics/v1/track-in-playlists-streams") def get_analytics_v1_track_in_playlists_streams(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/track-in-playlists-streams?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("Call to /dsp-api/spotify/tracks") def get_spotify_tracks(self, ids, ignore_response_attaching=False): api_string = f"/dsp-api/spotify/tracks?ids={ids}" resp = self.session.get(self.host_endpoint + api_string, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("GET /dsp-api/analytics/v1/track-markets-list") def get_analytics_v1_track_markets_list(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/track-markets-list?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("GET /dsp-api/analytics/v1/playlists-streams-graph") def get_analytics_v1_playlists_streams_graph(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/playlists-streams-graph?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("GET /dsp-api/analytics/v1/markets-streams-graph") def get_analytics_v1_markets_streams_graph(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/markets-streams-graph?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("GET /dsp-api/analytics/v1/playlist-date-range-streams") def get_analytics_v1_playlist_date_range_streams(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v1/playlist-date-range-streams?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("GET /dsp-api/consumer_analytics/streams-latest-date?vendors=youtube") def get_youtube_latest_date(self, ignore_response_attaching=False): api_string = "/dsp-api/consumer_analytics/streams-latest-date?vendors=youtube" resp = self.session.get(self.host_endpoint + api_string, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response @allure.step("GET /dsp-api/analytics/v2/tiktok/trends?") def get_analytics_v2_tiktok(self, *parameters, ignore_response_attaching=False): api_string = "/dsp-api/analytics/v2/tiktok/trends?" params_list = "&".join(parameters) resp = self.session.get(self.host_endpoint + api_string + params_list, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response["body"] @allure.step("GET /dsp-api/analytics/v1/tiktok/top-markets?") def get_top_markets_tiktok(self, isrc, ignore_response_attaching=False): api_string = f"/dsp-api/analytics/v1/tiktok/top-markets?isrc={isrc}" resp = self.session.get(self.host_endpoint + api_string, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response["body"] @allure.step("GET /dsp-api/analytics/v1/tiktok/graph?") def get_graph_tiktok(self, isrc, ignore_response_attaching=False): api_string = f"/dsp-api/analytics/v1/tiktok/graph?isrc={isrc}" resp = self.session.get(self.host_endpoint + api_string, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response["body"] @allure.step("GET /dsp-api/analytics/v1/tiktok/insight?") def get_insight_tiktok(self, isrc, ignore_response_attaching=False): api_string = f"/dsp-api/analytics/v1/tiktok/insight?isrc={isrc}" resp = self.session.get(self.host_endpoint + api_string, timeout=self.timeout) response = {"status_code": resp.status_code, "body": resp.json()} attach_response_info(resp, ignore_response_attaching) return response["body"]