# Path: github/Github.py
# class Github( object ):
#     def __init__( self, login_or_token = None, password = None, base_url = DEFAULT_BASE_URL, timeout = DEFAULT_TIMEOUT):
#         self.__requester = Requester( login_or_token, password, base_url, timeout )
# 
#     @property
#     def rate_limiting( self ):
#         return self.__requester.rate_limiting
# 
#     def get_user( self, login = GithubObject.NotSet ):
#         assert login is GithubObject.NotSet or isinstance( login, ( str, unicode ) ), login
#         if login is GithubObject.NotSet:
#             return AuthenticatedUser.AuthenticatedUser( self.__requester, { "url": "/user" }, completed = False )
#         else:
#             headers, data = self.__requester.requestAndCheck(
#                 "GET",
#                 "/users/" + login,
#                 None,
#                 None
#             )
#             return NamedUser.NamedUser( self.__requester, data, completed = True )
# 
#     def get_organization( self, login ):
#         assert isinstance( login, ( str, unicode ) ), login
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/orgs/" + login,
#             None,
#             None
#         )
#         return Organization.Organization( self.__requester, data, completed = True )
# 
#     def get_gist( self, id ):
#         assert isinstance( id, ( str, unicode ) ), id
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/gists/" + id,
#             None,
#             None
#         )
#         return Gist.Gist( self.__requester, data, completed = True )
# 
#     def get_gists( self ):
#         return PaginatedList.PaginatedList(
#             Gist.Gist,
#             self.__requester,
#             "/gists/public",
#             None
#         )
# 
#     def legacy_search_repos( self, keyword, language = GithubObject.NotSet ):
#         assert isinstance( keyword, ( str, unicode ) ), keyword
#         assert language is GithubObject.NotSet or isinstance( language, ( str, unicode ) ), language
#         args = {} if language is GithubObject.NotSet else { "language": language }
#         return Legacy.PaginatedList(
#             "/legacy/repos/search/" + urllib.quote( keyword ),
#             args,
#             self.__requester,
#             "repositories",
#             Legacy.convertRepo,
#             Repository.Repository,
#         )
# 
#     def legacy_search_users( self, keyword ):
#         assert isinstance( keyword, ( str, unicode ) ), keyword
#         return Legacy.PaginatedList(
#             "/legacy/user/search/" + urllib.quote( keyword ),
#             {},
#             self.__requester,
#             "users",
#             Legacy.convertUser,
#             NamedUser.NamedUser,
#         )
# 
#     def legacy_search_user_by_email( self, email ):
#         assert isinstance( email, ( str, unicode ) ), email
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/legacy/user/email/" + email,
#             None,
#             None
#         )
#         return NamedUser.NamedUser( self.__requester, Legacy.convertUser( data[ "user" ] ), completed = False )
# 
#     def render_markdown( self, text, context = GithubObject.NotSet ):
#         assert isinstance( text, ( str, unicode ) ), text
#         assert context is GithubObject.NotSet or isinstance( context, Repository.Repository ), context
#         post_parameters = {
#             "text": text
#         }
#         if context is not GithubObject.NotSet:
#             post_parameters[ "mode" ] = "gfm"
#             post_parameters[ "context" ] = context._identity
#         status, headers, data = self.__requester.requestRaw(
#             "POST",
#             "/markdown",
#             None,
#             post_parameters
#         )
#         return data
# 
#     def get_hooks( self ):
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/hooks",
#             None,
#             None
#         )
#         return [ HookDescription.HookDescription( self.__requester, attributes, completed = True ) for attributes in data ]


from google.appengine.api import urlfetch
from github import Github
import json


def setUser(user="", password=""):
    return Github(user, password).get_user()

def getFollowers(user):
    followers = []
    for f in user.get_followers():
        ret = {}
        ret['type'] = "Followers"
        namedUser = Github().get_user(f.login)
        if namedUser.name: 
            ret['name'] = namedUser.name + " - (" + f.login + ")"
        else:
            ret['name'] = f.login
        ret['url'] = "https://github.com/" + f.login
        followers.append(ret)
    return followers

def getFollowing(user):
    following = []
    for f in user.get_following():
        ret = {}
        ret['type'] = "Following"

# Path: github/Github.py
# class Github( object ):
#     def __init__( self, login_or_token = None, password = None, base_url = DEFAULT_BASE_URL, timeout = DEFAULT_TIMEOUT):
#         self.__requester = Requester( login_or_token, password, base_url, timeout )
# 
#     @property
#     def rate_limiting( self ):
#         return self.__requester.rate_limiting
# 
#     def get_user( self, login = GithubObject.NotSet ):
#         assert login is GithubObject.NotSet or isinstance( login, ( str, unicode ) ), login
#         if login is GithubObject.NotSet:
#             return AuthenticatedUser.AuthenticatedUser( self.__requester, { "url": "/user" }, completed = False )
#         else:
#             headers, data = self.__requester.requestAndCheck(
#                 "GET",
#                 "/users/" + login,
#                 None,
#                 None
#             )
#             return NamedUser.NamedUser( self.__requester, data, completed = True )
# 
#     def get_organization( self, login ):
#         assert isinstance( login, ( str, unicode ) ), login
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/orgs/" + login,
#             None,
#             None
#         )
#         return Organization.Organization( self.__requester, data, completed = True )
# 
#     def get_gist( self, id ):
#         assert isinstance( id, ( str, unicode ) ), id
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/gists/" + id,
#             None,
#             None
#         )
#         return Gist.Gist( self.__requester, data, completed = True )
# 
#     def get_gists( self ):
#         return PaginatedList.PaginatedList(
#             Gist.Gist,
#             self.__requester,
#             "/gists/public",
#             None
#         )
# 
#     def legacy_search_repos( self, keyword, language = GithubObject.NotSet ):
#         assert isinstance( keyword, ( str, unicode ) ), keyword
#         assert language is GithubObject.NotSet or isinstance( language, ( str, unicode ) ), language
#         args = {} if language is GithubObject.NotSet else { "language": language }
#         return Legacy.PaginatedList(
#             "/legacy/repos/search/" + urllib.quote( keyword ),
#             args,
#             self.__requester,
#             "repositories",
#             Legacy.convertRepo,
#             Repository.Repository,
#         )
# 
#     def legacy_search_users( self, keyword ):
#         assert isinstance( keyword, ( str, unicode ) ), keyword
#         return Legacy.PaginatedList(
#             "/legacy/user/search/" + urllib.quote( keyword ),
#             {},
#             self.__requester,
#             "users",
#             Legacy.convertUser,
#             NamedUser.NamedUser,
#         )
# 
#     def legacy_search_user_by_email( self, email ):
#         assert isinstance( email, ( str, unicode ) ), email
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/legacy/user/email/" + email,
#             None,
#             None
#         )
#         return NamedUser.NamedUser( self.__requester, Legacy.convertUser( data[ "user" ] ), completed = False )
# 
#     def render_markdown( self, text, context = GithubObject.NotSet ):
#         assert isinstance( text, ( str, unicode ) ), text
#         assert context is GithubObject.NotSet or isinstance( context, Repository.Repository ), context
#         post_parameters = {
#             "text": text
#         }
#         if context is not GithubObject.NotSet:
#             post_parameters[ "mode" ] = "gfm"
#             post_parameters[ "context" ] = context._identity
#         status, headers, data = self.__requester.requestRaw(
#             "POST",
#             "/markdown",
#             None,
#             post_parameters
#         )
#         return data
# 
#     def get_hooks( self ):
#         headers, data = self.__requester.requestAndCheck(
#             "GET",
#             "/hooks",
#             None,
#             None
#         )
#         return [ HookDescription.HookDescription( self.__requester, attributes, completed = True ) for attributes in data ]


# Path: app/utilities/utils.py
from google.appengine.api import urlfetch
from github import Github
import json



def setUser(user="", password=""):
    return Github(user, password).get_user()

def getFollowers(user):
    followers = []
    for f in user.get_followers():
        ret = {}
        ret['type'] = "Followers"
        namedUser = Github().get_user(f.login)
        if namedUser.name: 
            ret['name'] = namedUser.name + " - (" + f.login + ")"
        else:
            ret['name'] = f.login
        ret['url'] = "https://github.com/" + f.login
        followers.append(ret)
    return followers

def getFollowing(user):
    following = []
    for f in user.get_following():
        ret = {}
        ret['type'] = "Following"

        namedUser = Github().get_user(f.login)