from tests.data.base import playlist, track from tests.data.utils import set_data def update_message(i, j=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None): if dsp: is_spotify = dsp == "spotify" else: is_spotify = (j is not None) and (j % 2 == 0) or (i % 2 == 0) playlist_data = playlist(j or i, country_code=country_code, core_image_url=True, with_country_code=is_spotify) return { "ttl": 1800, "event_id": event_id or i, "account_id": account_id or i, "meta": { "dsp": "spotify" if is_spotify else "apple", "country_code": country_code if country_code is not None else "us", "views": ["feed_message", "push_message"], "subject": "starred_playlist", "type": "starred_playlist_tracklist_update" }, "data": { "recipient": { "devices": devices or [] }, "content": { "playlist": playlist_data } }, } def entry_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type=None, position=None, extra=None): if dsp: is_spotify = dsp == "spotify" else: is_spotify = (j is not None) and (j % 2 == 0) or (i % 2 == 0) if position is None: position = k if k is not None else i if position is not None: position += 1 message = { "ttl": 1800, "event_id": event_id or i, "account_id": account_id or i, "meta": { "dsp": "spotify" if is_spotify else "apple", "country_code": country_code if country_code is not None else "us", "views": ["feed_message", "push_message"], "subject": "starred_track_in_playlist", "type": type }, "data": { "recipient": { "devices": devices or [] }, "content": { "playlist": playlist(j or i, country_code=country_code, core_image_url=True, with_country_code=is_spotify), "track": track(k or i, ), "current_position": position } }, } set_data(message, exclude=None, extra=extra) return message def exit_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type=None, position=None, extra=None): if dsp: is_spotify = dsp == "spotify" else: is_spotify = (j is not None) and (j % 2 == 0) or (i % 2 == 0) if position is None: position = k if k is not None else i if position is not None: position += 1 message = { "ttl": 1800, "event_id": event_id or i, "account_id": account_id or i, "meta": { "dsp": "spotify" if is_spotify else "apple", "country_code": country_code if country_code is not None else "us", "views": ["feed_message", "push_message"], "subject": "starred_track_in_playlist", "type": type }, "data": { "recipient": { "devices": devices or [] }, "content": { "playlist": playlist(j or i, country_code=country_code, core_image_url=True, with_country_code=is_spotify), "track": track(k or i, ), "previous_position": position } }, } set_data(message, exclude=None, extra=extra) return message def major_move_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type=None, position=None, extra=None): if dsp: is_spotify = dsp == "spotify" else: is_spotify = (j is not None) and (j % 2 == 0) or (i % 2 == 0) if position is None: position = k if k is not None else i if position is not None: position += 1 message = { "ttl": 1800, "event_id": event_id or i, "account_id": account_id or i, "meta": { "dsp": "spotify" if is_spotify else "apple", "country_code": country_code if country_code is not None else "us", "views": ["feed_message", "push_message"], "subject": "starred_track_in_playlist", "type": type }, "data": { "recipient": { "devices": devices or [] }, "content": { "playlist": playlist(j or i, country_code=country_code, core_image_url=True, with_country_code=is_spotify), "track": track(k or i, ), "current_position": position, "previous_position": position + 5 } }, } set_data(message, exclude=None, extra=extra) return message def starred_entry_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type="starred_track_starred_playlist_entry", position=None): return entry_message(i, j, k, event_id=event_id, account_id=account_id, dsp=dsp, country_code=country_code, devices=devices, type=type, position=position) def top_entry_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type="starred_track_top_playlist_entry", position=None, extra=None): return entry_message(i, j, k, event_id=event_id, account_id=account_id, dsp=dsp, country_code=country_code, devices=devices, type=type, position=position, extra=extra) def starred_exit_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type="starred_track_starred_playlist_exit", position=None): return exit_message(i, j, k, event_id=event_id, account_id=account_id, dsp=dsp, country_code=country_code, devices=devices, type=type, position=position) def top_exit_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type="starred_track_top_playlist_exit", position=None, extra=None): return exit_message(i, j, k, event_id=event_id, account_id=account_id, dsp=dsp, country_code=country_code, devices=devices, type=type, position=position, extra=extra) def starred_major_move_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type="starred_track_starred_playlist_major_move", position=None): return major_move_message(i, j, k, event_id=event_id, account_id=account_id, dsp=dsp, country_code=country_code, devices=devices, type=type, position=position) def top_major_move_message( i, j=None, k=None, event_id=None, account_id=None, dsp=None, country_code=None, devices=None, type="starred_track_top_playlist_major_move", position=None, extra=None): return major_move_message(i, j, k, event_id=event_id, account_id=account_id, dsp=dsp, country_code=country_code, devices=devices, type=type, position=position, extra=extra)