2323from .search import (CodeSearchResult , IssueSearchResult ,
2424 RepositorySearchResult , UserSearchResult )
2525from .structs import SearchIterator
26- from .users import User , Key
26+ from . import users
2727from .notifications import Thread
2828from .licenses import License
2929from uritemplate import URITemplate
@@ -67,6 +67,20 @@ def _repr(self):
6767 return '<GitHub [{0[0]}]>' .format (self .session .auth )
6868 return '<GitHub at 0x{0:x}>' .format (id (self ))
6969
70+ @requires_auth
71+ def add_email_addresses (self , addresses = []):
72+ """Add the email addresses in ``addresses`` to the authenticated
73+ user's account.
74+
75+ :param list addresses: (optional), email addresses to be added
76+ :returns: list of :class:`~github3.users.Email`
77+ """
78+ json = []
79+ if addresses :
80+ url = self ._build_url ('user' , 'emails' )
81+ json = self ._json (self ._post (url , data = addresses ), 201 )
82+ return [users .Email (email ) for email in json ]
83+
7084 def all_events (self , number = - 1 , etag = None ):
7185 """Iterate over public events.
7286
@@ -134,7 +148,7 @@ def all_users(self, number=-1, etag=None, per_page=None, since=None):
134148 :returns: generator of :class:`User <github3.users.User>`
135149 """
136150 url = self ._build_url ('users' )
137- return self ._iter (int (number ), url , User , etag = etag ,
151+ return self ._iter (int (number ), url , users . User , etag = etag ,
138152 params = {'per_page' : per_page , 'since' : since })
139153
140154 @requires_basic_auth
@@ -298,7 +312,7 @@ def create_key(self, title, key):
298312 url = self ._build_url ('user' , 'keys' )
299313 req = self ._post (url , data = {'title' : title , 'key' : key })
300314 json = self ._json (req , 201 )
301- return self ._instance_or_null (Key , json )
315+ return self ._instance_or_null (users . Key , json )
302316
303317 @requires_auth
304318 def create_repository (self , name , description = '' , homepage = '' ,
@@ -331,6 +345,18 @@ def create_repository(self, name, description='', homepage='',
331345 json = self ._json (self ._post (url , data = data ), 201 )
332346 return self ._instance_or_null (Repository , json )
333347
348+ @requires_auth
349+ def delete_email_addresses (self , addresses = []):
350+ """Delete the email addresses in ``addresses`` from the
351+ authenticated user's account.
352+
353+ :param list addresses: (optional), email addresses to be removed
354+ :returns: bool
355+ """
356+ url = self ._build_url ('user' , 'emails' )
357+ return self ._boolean (self ._delete (url , data = json .dumps (addresses )),
358+ 204 , 404 )
359+
334360 @requires_auth
335361 def emails (self , number = - 1 , etag = None ):
336362 """Iterate over email addresses for the authenticated user.
@@ -342,7 +368,7 @@ def emails(self, number=-1, etag=None):
342368 :returns: generator of dicts
343369 """
344370 url = self ._build_url ('user' , 'emails' )
345- return self ._iter (int (number ), url , dict , etag = etag )
371+ return self ._iter (int (number ), url , users . Email , etag = etag )
346372
347373 def emojis (self ):
348374 """Retrieves a dictionary of all of the emojis that GitHub supports.
@@ -440,7 +466,7 @@ def followed_by(self, username, number=-1, etag=None):
440466 :returns: generator of :class:`User <github3.users.User>`\ s
441467 """
442468 url = self ._build_url ('users' , username , 'following' )
443- return self ._iter (int (number ), url , User , etag = etag )
469+ return self ._iter (int (number ), url , users . User , etag = etag )
444470
445471 @requires_auth
446472 def followers (self , number = - 1 , etag = None ):
@@ -457,7 +483,7 @@ def followers(self, number=-1, etag=None):
457483 :returns: generator of :class:`User <github3.users.User>`\ s
458484 """
459485 url = self ._build_url ('user' , 'followers' )
460- return self ._iter (int (number ), url , User , etag = etag )
486+ return self ._iter (int (number ), url , users . User , etag = etag )
461487
462488 def followers_of (self , username , number = - 1 , etag = None ):
463489 """Iterate over followers of ``username``.
@@ -474,7 +500,7 @@ def followers_of(self, username, number=-1, etag=None):
474500 :returns: generator of :class:`User <github3.users.User>`\ s
475501 """
476502 url = self ._build_url ('users' , username , 'followers' )
477- return self ._iter (int (number ), url , User , etag = etag )
503+ return self ._iter (int (number ), url , users . User , etag = etag )
478504
479505 @requires_auth
480506 def following (self , number = - 1 , etag = None ):
@@ -491,7 +517,7 @@ def following(self, number=-1, etag=None):
491517 :returns: generator of :class:`User <github3.users.User>`\ s
492518 """
493519 url = self ._build_url ('user' , 'following' )
494- return self ._iter (int (number ), url , User , etag = etag )
520+ return self ._iter (int (number ), url , users . User , etag = etag )
495521
496522 def gist (self , id_num ):
497523 """Retrieve the gist using the specified id number.
@@ -685,7 +711,7 @@ def key(self, id_num):
685711 if int (id_num ) > 0 :
686712 url = self ._build_url ('user' , 'keys' , str (id_num ))
687713 json = self ._json (self ._get (url ), 200 )
688- return self ._instance_or_null (Key , json )
714+ return self ._instance_or_null (users . Key , json )
689715
690716 @requires_auth
691717 def keys (self , number = - 1 , etag = None ):
@@ -698,7 +724,7 @@ def keys(self, number=-1, etag=None):
698724 :returns: generator of :class:`Key <github3.users.Key>`\ s
699725 """
700726 url = self ._build_url ('user' , 'keys' )
701- return self ._iter (int (number ), url , Key , etag = etag )
727+ return self ._iter (int (number ), url , users . Key , etag = etag )
702728
703729 def license (self , name ):
704730 """Retrieve the license specified by the name.
@@ -790,7 +816,7 @@ def me(self):
790816 """
791817 url = self ._build_url ('user' )
792818 json = self ._json (self ._get (url ), 200 )
793- return self ._instance_or_null (User , json )
819+ return self ._instance_or_null (users . User , json )
794820
795821 @requires_auth
796822 def membership_in (self , organization ):
@@ -1569,7 +1595,7 @@ def user(self, username):
15691595 """
15701596 url = self ._build_url ('users' , username )
15711597 json = self ._json (self ._get (url ), 200 )
1572- return self ._instance_or_null (User , json )
1598+ return self ._instance_or_null (users . User , json )
15731599
15741600 @requires_auth
15751601 def user_issues (self , filter = '' , state = '' , labels = '' , sort = '' ,
@@ -1638,7 +1664,7 @@ def user_with_id(self, number):
16381664 if number > 0 :
16391665 url = self ._build_url ('user' , str (number ))
16401666 json = self ._json (self ._get (url ), 200 )
1641- return self ._instance_or_null (User , json )
1667+ return self ._instance_or_null (users . User , json )
16421668
16431669 def zen (self ):
16441670 """Returns a quote from the Zen of GitHub. Yet another API Easter Egg
@@ -1684,7 +1710,7 @@ def create_user(self, login, email):
16841710 url = self ._build_url ('admin' , 'users' )
16851711 payload = {'login' : login , 'email' : email }
16861712 json_data = self ._json (self ._post (url , data = payload ), 201 )
1687- return self ._instance_or_null (User , json_data )
1713+ return self ._instance_or_null (users . User , json_data )
16881714
16891715 @requires_auth
16901716 def admin_stats (self , option ):
0 commit comments