Skip to content

Commit 7d14331

Browse files
committed
adds UpdateFriendship (shared Add/Edit friendship)
1 parent 00d605d commit 7d14331

1 file changed

Lines changed: 31 additions & 5 deletions

File tree

twitter/api.py

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2056,24 +2056,50 @@ def CreateFriendship(self, user_id=None, screen_name=None, follow=True):
20562056
Returns:
20572057
A twitter.User instance representing the befriended user.
20582058
"""
2059-
url = '%s/friendships/create.json' % (self.base_url)
2059+
return self._AddOrEditFriendship(user_id=user_id, screen_name=screen_name, follow=follow)
2060+
2061+
def _AddOrEditFriendship(self, user_id=None, screen_name=None, uri_end='create', follow_key='follow', follow=True):
2062+
"""
2063+
Shared method for Create/Update Friendship.
2064+
2065+
"""
2066+
url = '%s/friendships/%s.json' % (self.base_url, uri_end)
20602067
data = {}
20612068
if user_id:
20622069
data['user_id'] = user_id
20632070
elif screen_name:
20642071
data['screen_name'] = screen_name
20652072
else:
20662073
raise TwitterError({'message': "Specify at least one of user_id or screen_name."})
2067-
if follow:
2068-
data['follow'] = 'true'
2069-
else:
2070-
data['follow'] = 'false'
2074+
follow_json = json.dumps(follow)
2075+
data['{}'.format(follow_key)] = follow_json
20712076

20722077
json_data = self._RequestUrl(url, 'POST', data=data)
20732078
data = self._ParseAndCheckTwitter(json_data.content)
20742079

20752080
return User.NewFromJsonDict(data)
20762081

2082+
def UpdateFriendship(self, user_id=None, screen_name=None, follow=True, **kwargs): # api compat with Create
2083+
"""Updates a friendship with the user specified by the user_id or screen_name.
2084+
2085+
The twitter.Api instance must be authenticated.
2086+
2087+
Args:
2088+
user_id:
2089+
A user_id to update [Optional]
2090+
screen_name:
2091+
A screen_name to update [Optional]
2092+
follow:
2093+
Set to False to disable notifications for the target user
2094+
device:
2095+
Set to False to disable notifications for the target user
2096+
2097+
Returns:
2098+
A twitter.User instance representing the befriended user.
2099+
"""
2100+
follow = kwargs.get('device', follow)
2101+
return self._AddOrEditFriendship(user_id=user_id, screen_name=screen_name, follow=follow, follow_key='device', uri_end='update')
2102+
20772103
def DestroyFriendship(self, user_id=None, screen_name=None):
20782104
"""Discontinues friendship with a user_id or screen_name.
20792105

0 commit comments

Comments
 (0)