Skip to content

Commit 2c3dfb9

Browse files
authored
AssociatedMedia has a field for type and a field for the URL rather than having one URL field per type (#76)
See title.
1 parent 9d9e3f0 commit 2c3dfb9

File tree

5 files changed

+17
-19
lines changed

5 files changed

+17
-19
lines changed

src/pardner/services/groupme.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,9 @@ def parse_conversation_group_vertical(
302302
associated_media = []
303303
image_url = raw_data_dict.get('image_url', None)
304304
if image_url:
305-
associated_media = [AssociatedMediaSubVertical(image_url=image_url)]
305+
associated_media = [
306+
AssociatedMediaSubVertical(media_type='image', url=image_url)
307+
]
306308

307309
is_private = None
308310
conversation_type = raw_data_dict.get('type')

src/pardner/services/strava.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def parse_social_posting_vertical(
112112
raw_data_dict['photos'].get('primary', {}).get('urls', {}).values()
113113
)
114114
associated_media_list = [
115-
AssociatedMediaSubVertical(image_url=photo_url)
115+
AssociatedMediaSubVertical(media_type='image', url=photo_url)
116116
for photo_url in photo_urls
117117
]
118118

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1-
from pydantic import AnyHttpUrl
1+
from typing import Literal
2+
3+
from pydantic import AnyHttpUrl, Field
24

35
from pardner.verticals.sub_verticals.base import BaseSubVertical
46

57

68
class AssociatedMediaSubVertical(BaseSubVertical):
79
"""Holds the URL for the media attached to a parent vertical."""
810

9-
audio_url: AnyHttpUrl | None = None
10-
image_url: AnyHttpUrl | None = None
11-
video_url: AnyHttpUrl | None = None
11+
media_type: Literal['audio', 'image', 'video'] | None = Field(
12+
description='If media type is unknown or not one of the types defined in this '
13+
'field, value is None.',
14+
default=None,
15+
)
16+
url: AnyHttpUrl | None = None

tests/test_transfer_services/test_groupme.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,8 @@ def test_fetch_conversation_group_vertical(groupme_transfer_service, mocker):
437437
'created_at': datetime(2011, 4, 12, 15, 48, 48, tzinfo=timezone.utc),
438438
'associated_media': [
439439
{
440-
'audio_url': None,
441-
'image_url': AnyHttpUrl('https://i.groupme.com/123456789'),
442-
'video_url': None,
440+
'media_type': 'image',
441+
'url': AnyHttpUrl('https://i.groupme.com/123456789'),
443442
}
444443
],
445444
'is_private': True,

tests/test_transfer_services/test_strava.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -204,16 +204,8 @@ def test_fetch_physical_activity_vertical(mocker, strava_transfer_service):
204204
'created_at': datetime.datetime(2018, 5, 2, 12, 15, 9),
205205
'url': AnyHttpUrl('https://www.strava.com/activities/154504250376823'),
206206
'associated_media': [
207-
{
208-
'audio_url': None,
209-
'image_url': AnyHttpUrl('https://url1.com/'),
210-
'video_url': None,
211-
},
212-
{
213-
'audio_url': None,
214-
'image_url': AnyHttpUrl('https://url2.com/'),
215-
'video_url': None,
216-
},
207+
{'media_type': 'image', 'url': AnyHttpUrl('https://url1.com/')},
208+
{'media_type': 'image', 'url': AnyHttpUrl('https://url2.com/')},
217209
],
218210
'status': 'restricted',
219211
'text': 'mock description',

0 commit comments

Comments
 (0)