def request(
self, method, endpoint, *args, allowed_param=[], params=None,
headers=None, json_payload=None, parser=None, payload_list=False,
- payload_type=None, post_data=None, require_auth=False,
+ payload_type=None, post_data=None, require_auth=True,
return_cursors=False, upload_api=False, use_cache=True, **kwargs
):
# If authentication is required and no credentials
return self.request(
'GET', 'statuses/home_timeline', *args,
allowed_param=['count', 'since_id', 'max_id', 'trim_user',
- 'exclude_replies', 'include_entities'],
- require_auth=True, **kwargs
+ 'exclude_replies', 'include_entities'], **kwargs
)
@payload('status', list=True)
'GET', 'statuses/lookup', list_to_csv(id_), *args,
allowed_param=['id', 'include_entities', 'trim_user', 'map',
'include_ext_alt_text', 'include_card_uri'],
- require_auth=True, **kwargs
+ **kwargs
)
@pagination(mode='id')
'GET', 'statuses/user_timeline', *args,
allowed_param=['user_id', 'screen_name', 'since_id', 'count',
'max_id', 'trim_user', 'exclude_replies',
- 'include_rts'],
- require_auth=True, **kwargs
+ 'include_rts'], **kwargs
)
@pagination(mode='id')
"""
return self.request(
'GET', 'statuses/mentions_timeline', *args,
- allowed_param=['since_id', 'max_id', 'count'],
- require_auth=True, **kwargs
+ allowed_param=['since_id', 'max_id', 'count'], **kwargs
)
@pagination(mode='id')
"""
return self.request(
'GET', 'statuses/retweets_of_me', *args,
- allowed_param=['since_id', 'max_id', 'count'],
- require_auth=True, **kwargs
+ allowed_param=['since_id', 'max_id', 'count'], **kwargs
)
@payload('status')
'GET', 'statuses/show', *args,
allowed_param=['id', 'trim_user', 'include_my_retweet',
'include_entities', 'include_ext_alt_text',
- 'include_card_uri'],
- require_auth=True, **kwargs
+ 'include_card_uri'], **kwargs
)
@payload('status')
'media_ids', 'possibly_sensitive', 'lat', 'long',
'place_id', 'display_coordinates', 'trim_user',
'enable_dmcommands', 'fail_dmcommands',
- 'card_uri'],
- require_auth=True, **kwargs
+ 'card_uri'], **kwargs
)
@payload('media')
return self.request(
'POST', 'media/upload', *args,
allowed_param=[],
- require_auth=True,
upload_api=True, **kwargs
)
return self.request(
'POST', 'media/metadata/create', *args,
allowed_param=[],
- require_auth=True,
upload_api=True, **kwargs
)
'in_reply_to_status_id',
'in_reply_to_status_id_str',
'auto_populate_reply_metadata', 'lat', 'long',
- 'place_id', 'display_coordinates'],
- require_auth=True, **kwargs
+ 'place_id', 'display_coordinates'], **kwargs
)
@payload('status')
:allowed_param:
"""
return self.request(
- 'POST', f'statuses/destroy/{status_id}', *args,
- require_auth=True, **kwargs
+ 'POST', f'statuses/destroy/{status_id}', *args, **kwargs
)
@payload('status')
:allowed_param:
"""
return self.request(
- 'POST', f'statuses/retweet/{status_id}', *args,
- require_auth=True, **kwargs
+ 'POST', f'statuses/retweet/{status_id}', *args, **kwargs
)
@payload('status')
:allowed_param:
"""
return self.request(
- 'POST', f'statuses/unretweet/{status_id}', *args,
- require_auth=True, **kwargs
+ 'POST', f'statuses/unretweet/{status_id}', *args, **kwargs
)
@payload('status', list=True)
"""
return self.request(
'GET', f'statuses/retweets/{status_id}', *args,
- allowed_param=['count'],
- require_auth=True, **kwargs
+ allowed_param=['count'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'statuses/retweeters/ids', *args,
- allowed_param=['id', 'cursor', 'stringify_ids'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'cursor', 'stringify_ids'], **kwargs
)
@payload('user')
"""
return self.request(
'GET', 'users/show', *args,
- allowed_param=['id', 'user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name'], **kwargs
)
@payload('json')
'GET', 'statuses/oembed', *args,
allowed_param=['url', 'maxwidth', 'hide_media', 'hide_thread',
'omit_script', 'align', 'related', 'lang', 'theme',
- 'link_color', 'widget_type', 'dnt'], **kwargs
+ 'link_color', 'widget_type', 'dnt'],
+ require_auth=False, **kwargs
)
@payload('user', list=True)
'POST', 'users/lookup', list_to_csv(user_ids),
list_to_csv(screen_names), *args,
allowed_param=['user_id', 'screen_name', 'include_entities',
- 'tweet_mode'],
- require_auth=True, **kwargs
+ 'tweet_mode'], **kwargs
)
def me(self):
"""
return self.request(
'GET', 'users/search', *args,
- require_auth=True,
allowed_param=['q', 'count', 'page'], **kwargs
)
"""
return self.request(
'GET', 'direct_messages/events/show', *args,
- allowed_param=['id'],
- require_auth=True, **kwargs
+ allowed_param=['id'], **kwargs
)
@pagination(mode='dm_cursor')
"""
return self.request(
'GET', 'direct_messages/events/list', *args,
- allowed_param=['count', 'cursor'],
- require_auth=True, **kwargs
+ allowed_param=['count', 'cursor'], **kwargs
)
@payload('direct_message')
message_data['ctas'] = ctas
return self.request(
'POST', 'direct_messages/events/new',
- require_auth=True,
json_payload=json_payload, **kwargs
)
"""
return self.request(
'DELETE', 'direct_messages/events/destroy', *args,
- allowed_param=['id'],
- require_auth=True, **kwargs
+ allowed_param=['id'], **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'friendships/create', *args,
- allowed_param=['id', 'user_id', 'screen_name', 'follow'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name', 'follow'], **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'friendships/destroy', *args,
- allowed_param=['id', 'user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name'], **kwargs
)
@payload('friendship')
return self.request(
'GET', 'friendships/show', *args,
allowed_param=['source_id', 'source_screen_name',
- 'target_id', 'target_screen_name'],
- require_auth=True, **kwargs
+ 'target_id', 'target_screen_name'], **kwargs
)
@payload('relationship', list=True)
return self.request(
'GET', 'friendships/lookup', list_to_csv(user_ids),
list_to_csv(screen_names),
- allowed_param=['user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['user_id', 'screen_name'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'friends/ids', *args,
- allowed_param=['id', 'user_id', 'screen_name', 'cursor'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name', 'cursor'], **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'friends/list', *args,
allowed_param=['id', 'user_id', 'screen_name', 'cursor', 'count',
- 'skip_status', 'include_user_entities'],
- require_auth=True, **kwargs
+ 'skip_status', 'include_user_entities'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'friendships/incoming', *args,
- allowed_param=['cursor'],
- require_auth=True, **kwargs
+ allowed_param=['cursor'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'friendships/outgoing', *args,
- allowed_param=['cursor'],
- require_auth=True, **kwargs
+ allowed_param=['cursor'], **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'followers/ids', *args,
allowed_param=['id', 'user_id', 'screen_name', 'cursor', 'count'],
- require_auth=True, **kwargs
+ **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'followers/list', *args,
allowed_param=['id', 'user_id', 'screen_name', 'cursor', 'count',
- 'skip_status', 'include_user_entities'],
- require_auth=True, **kwargs
+ 'skip_status', 'include_user_entities'], **kwargs
)
@payload('json')
def get_settings(self, *args, **kwargs):
""" :reference: https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/get-account-settings """
return self.request(
- 'GET', 'account/settings', *args,
- require_auth=True, use_cache=False, **kwargs
+ 'GET', 'account/settings', *args, use_cache=False, **kwargs
)
@payload('json')
'end_sleep_time', 'time_zone',
'trend_location_woeid',
'allow_contributor_request', 'lang'],
- require_auth=True, use_cache=False, **kwargs
+ use_cache=False, **kwargs
)
@payload('user')
try:
return self.request(
'GET', 'account/verify_credentials',
- require_auth=True,
allowed_param=['include_entities', 'skip_status',
'include_email'], **kwargs
)
"""
return self.request(
'GET', 'application/rate_limit_status', *args,
- allowed_param=['resources'],
- require_auth=True, use_cache=False, **kwargs
+ allowed_param=['resources'], use_cache=False, **kwargs
)
@payload('user')
return self.request(
'POST', 'account/update_profile_image', *args,
allowed_param=['include_entities', 'skip_status'],
- require_auth=True,
post_data=post_data, headers=headers, **kwargs
)
return self.request(
'POST', 'account/update_profile_banner',
allowed_param=['width', 'height', 'offset_left', 'offset_right'],
- require_auth=True,
post_data=post_data, headers=headers, **kwargs
)
return self.request(
'POST', 'account/update_profile', *args,
allowed_param=['name', 'url', 'location', 'description',
- 'profile_link_color'],
- require_auth=True, **kwargs
+ 'profile_link_color'], **kwargs
)
@pagination(mode='id')
return self.request(
'GET', 'favorites/list', *args,
allowed_param=['screen_name', 'user_id', 'max_id', 'count',
- 'since_id'],
- require_auth=True, **kwargs
+ 'since_id'], **kwargs
)
@payload('status')
"""
return self.request(
'POST', 'favorites/create', *args,
- allowed_param=['id'],
- require_auth=True, **kwargs
+ allowed_param=['id'], **kwargs
)
@payload('status')
"""
return self.request(
'POST', 'favorites/destroy', *args,
- allowed_param=['id'],
- require_auth=True, **kwargs
+ allowed_param=['id'], **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'blocks/create', *args,
- allowed_param=['id', 'user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name'], **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'blocks/destroy', *args,
- allowed_param=['id', 'user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'mutes/users/ids', *args,
- allowed_param=['cursor'],
- require_auth=True, **kwargs
+ allowed_param=['cursor'], **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'mutes/users/list', *args,
allowed_param=['cursor', 'include_entities', 'skip_status'],
- required_auth=True, **kwargs
+ **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'mutes/users/create', *args,
- allowed_param=['id', 'user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name'], **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'mutes/users/destroy', *args,
- allowed_param=['id', 'user_id', 'screen_name'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'user_id', 'screen_name'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'blocks/list', *args,
- allowed_param=['cursor'],
- require_auth=True, **kwargs
+ allowed_param=['cursor'], **kwargs
)
@pagination(mode='cursor')
"""
return self.request(
'GET', 'blocks/ids', *args,
- allowed_param=['cursor'],
- require_auth=True, **kwargs
+ allowed_param=['cursor'], **kwargs
)
@payload('user')
"""
return self.request(
'POST', 'users/report_spam', *args,
- allowed_param=['user_id', 'screen_name', 'perform_block'],
- require_auth=True, **kwargs
+ allowed_param=['user_id', 'screen_name', 'perform_block'], **kwargs
)
@payload('saved_search', list=True)
def saved_searches(self, *args, **kwargs):
""" :reference: https://developer.twitter.com/en/docs/accounts-and-users/manage-account-settings/api-reference/get-saved_searches-list """
- return self.request(
- 'GET', 'saved_searches/list', *args,
- require_auth=True, **kwargs
- )
+ return self.request('GET', 'saved_searches/list', *args, **kwargs)
@payload('saved_search')
def get_saved_search(self, saved_search_id, *args, **kwargs):
:allowed_param:
"""
return self.request(
- 'GET', f'saved_searches/show/{saved_search_id}', *args,
- require_auth=True, **kwargs
+ 'GET', f'saved_searches/show/{saved_search_id}', *args, **kwargs
)
@payload('saved_search')
"""
return self.request(
'POST', 'saved_searches/create', *args,
- allowed_param=['query'],
- require_auth=True, **kwargs
+ allowed_param=['query'], **kwargs
)
@payload('saved_search')
"""
return self.request(
'POST', f'saved_searches/destroy/{saved_search_id}', *args,
- require_auth=True, **kwargs
+ **kwargs
)
@payload('list')
"""
return self.request(
'POST', 'lists/create', *args,
- allowed_param=['name', 'mode', 'description'],
- require_auth=True, **kwargs
+ allowed_param=['name', 'mode', 'description'], **kwargs
)
@payload('list')
return self.request(
'POST', 'lists/destroy', *args,
allowed_param=['owner_screen_name', 'owner_id', 'list_id', 'slug'],
- require_auth=True, **kwargs
+ **kwargs
)
@payload('list')
return self.request(
'POST', 'lists/update', *args,
allowed_param=['list_id', 'slug', 'name', 'mode', 'description',
- 'owner_screen_name', 'owner_id'],
- require_auth=True, **kwargs
+ 'owner_screen_name', 'owner_id'], **kwargs
)
@payload('list', list=True)
"""
return self.request(
'GET', 'lists/list', *args,
- allowed_param=['screen_name', 'user_id', 'reverse'],
- require_auth=True, **kwargs
+ allowed_param=['screen_name', 'user_id', 'reverse'], **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'lists/memberships', *args,
allowed_param=['screen_name', 'user_id', 'filter_to_owned_lists',
- 'cursor', 'count'],
- require_auth=True, **kwargs
+ 'cursor', 'count'], **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'lists/ownerships', *args,
allowed_param=['user_id', 'screen_name', 'count', 'cursor'],
- require_auth=True, **kwargs
+ **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'lists/subscriptions', *args,
allowed_param=['screen_name', 'user_id', 'cursor', 'count'],
- require_auth=True, **kwargs
+ **kwargs
)
@pagination(mode='id')
'GET', 'lists/statuses', *args,
allowed_param=['owner_screen_name', 'slug', 'owner_id', 'list_id',
'since_id', 'max_id', 'count', 'include_entities',
- 'include_rts'],
- require_auth=True, **kwargs
+ 'include_rts'], **kwargs
)
@payload('list')
return self.request(
'GET', 'lists/show', *args,
allowed_param=['owner_screen_name', 'owner_id', 'slug', 'list_id'],
- require_auth=True, **kwargs
+ **kwargs
)
@payload('list')
return self.request(
'POST', 'lists/members/create', *args,
allowed_param=['screen_name', 'user_id', 'owner_screen_name',
- 'owner_id', 'slug', 'list_id'],
- require_auth=True, **kwargs
+ 'owner_id', 'slug', 'list_id'], **kwargs
)
@payload('list')
return self.request(
'POST', 'lists/members/destroy', *args,
allowed_param=['screen_name', 'user_id', 'owner_screen_name',
- 'owner_id', 'slug', 'list_id'],
- require_auth=True, **kwargs
+ 'owner_id', 'slug', 'list_id'], **kwargs
)
@payload('list')
'POST', 'lists/members/create_all', list_to_csv(screen_name),
list_to_csv(user_id), slug, list_id, owner_id, owner_screen_name,
allowed_param=['screen_name', 'user_id', 'slug', 'list_id',
- 'owner_id', 'owner_screen_name'],
- require_auth=True, **kwargs
+ 'owner_id', 'owner_screen_name'], **kwargs
)
@payload('list')
'POST', 'lists/members/destroy_all', list_to_csv(screen_name),
list_to_csv(user_id), slug, list_id, owner_id, owner_screen_name,
allowed_param=['screen_name', 'user_id', 'slug', 'list_id',
- 'owner_id', 'owner_screen_name'],
- require_auth=True, **kwargs
+ 'owner_id', 'owner_screen_name'], **kwargs
)
@pagination(mode='cursor')
return self.request(
'GET', 'lists/members', *args,
allowed_param=['owner_screen_name', 'slug', 'list_id', 'owner_id',
- 'cursor'],
- require_auth=True, **kwargs
+ 'cursor'], **kwargs
)
@payload('user')
return self.request(
'GET', 'lists/members/show', *args,
allowed_param=['list_id', 'slug', 'user_id', 'screen_name',
- 'owner_screen_name', 'owner_id'],
- require_auth=True, **kwargs
+ 'owner_screen_name', 'owner_id'], **kwargs
)
@payload('list')
return self.request(
'POST', 'lists/subscribers/create', *args,
allowed_param=['owner_screen_name', 'slug', 'owner_id', 'list_id'],
- require_auth=True, **kwargs
+ **kwargs
)
@payload('list')
return self.request(
'POST', 'lists/subscribers/destroy', *args,
allowed_param=['owner_screen_name', 'slug', 'owner_id', 'list_id'],
- require_auth=True, **kwargs
+ **kwargs
)
@pagination(mode='cursor')
'GET', 'lists/subscribers', *args,
allowed_param=['owner_screen_name', 'slug', 'owner_id', 'list_id',
'cursor', 'count', 'include_entities',
- 'skip_status'],
- require_auth=True, **kwargs
+ 'skip_status'], **kwargs
)
@payload('user')
return self.request(
'GET', 'lists/subscribers/show', *args,
allowed_param=['owner_screen_name', 'slug', 'screen_name',
- 'owner_id', 'list_id', 'user_id'],
- require_auth=True, **kwargs
+ 'owner_id', 'list_id', 'user_id'], **kwargs
)
@payload('json')
def trends_available(self, *args, **kwargs):
""" :reference: https://developer.twitter.com/en/docs/trends/locations-with-trending-topics/api-reference/get-trends-available """
- return self.request('GET', 'trends/available', *args,
- require_auth=True, **kwargs)
+ return self.request('GET', 'trends/available', *args, **kwargs)
@payload('json')
def trends_place(self, *args, **kwargs):
"""
return self.request(
'GET', 'trends/place', *args,
- allowed_param=['id', 'exclude'],
- require_auth=True, **kwargs
+ allowed_param=['id', 'exclude'], **kwargs
)
@payload('json')
"""
return self.request(
'GET', 'trends/closest', *args,
- allowed_param=['lat', 'long'],
- require_auth=True, **kwargs
+ allowed_param=['lat', 'long'], **kwargs
)
@pagination(mode='id')
'GET', 'search/tweets', *args,
allowed_param=['q', 'lang', 'locale', 'since_id', 'geocode',
'max_id', 'until', 'result_type', 'count',
- 'include_entities'],
- require_auth=True, **kwargs
+ 'include_entities'], **kwargs
)
@pagination(mode='next')
return self.request(
'GET', f'tweets/search/30day/{environment_name}', *args,
allowed_param=['query', 'tag', 'fromDate', 'toDate', 'maxResults',
- 'next'],
- require_auth=True, **kwargs
+ 'next'], **kwargs
)
@pagination(mode='next')
return self.request(
'GET', f'tweets/search/fullarchive/{environment_name}', *args,
allowed_param=['query', 'tag', 'fromDate', 'toDate', 'maxResults',
- 'next'],
- require_auth=True, **kwargs
+ 'next'], **kwargs
)
@payload('place', list=True)
return self.request(
'GET', 'geo/reverse_geocode', *args,
allowed_param=['lat', 'long', 'accuracy', 'granularity',
- 'max_results'],
- require_auth=True, **kwargs
+ 'max_results'], **kwargs
)
@payload('place')
""" :reference: https://developer.twitter.com/en/docs/geo/place-information/api-reference/get-geo-id-place_id
:allowed_param:
"""
- return self.request('GET', f'geo/id/{place_id}', *args,
- require_auth=True, **kwargs)
+ return self.request('GET', f'geo/id/{place_id}', *args, **kwargs)
@payload('place', list=True)
def geo_search(self, *args, **kwargs):
'GET', 'geo/search', *args,
allowed_param=['lat', 'long', 'query', 'ip', 'granularity',
'accuracy', 'max_results', 'contained_within'],
- require_auth=True, **kwargs
+ **kwargs
)
@payload('json')
def supported_languages(self, *args, **kwargs):
""" :reference: https://developer.twitter.com/en/docs/developer-utilities/supported-languages/api-reference/get-help-languages """
- return self.request(
- 'GET', 'help/languages', *args,
- require_auth=True, **kwargs
- )
+ return self.request('GET', 'help/languages', *args, **kwargs)
@payload('json')
def configuration(self, *args, **kwargs):
""" :reference: https://developer.twitter.com/en/docs/developer-utilities/configuration/api-reference/get-help-configuration """
- return self.request(
- 'GET', 'help/configuration', *args,
- require_auth=True, **kwargs
- )
+ return self.request('GET', 'help/configuration', *args, **kwargs)
""" Internal use only """