Exemplo n.º 1
0
    def post(self, request, repository_name):
        access_token = take_access_token_from_session(request)
        if access_token:
            user = request.session['user']

            assert isinstance(user, GithubUser)

            resp_data = GithubAPI.get_user_public_repository(user.login, repository_name)
            github_repository = GithubRepositoryBuilder.build(resp_data, user)
            github_repository.save()

            # try to fetch repository by session_key and check if exists on file_system
            # before initializing the new one

            # also think of uniqueness of user_session

            session_key = request.session.session_key
            query_set = LocalRepository.objects.filter(user_session_key=session_key,
                                                       github_repository_id=github_repository.id) \
                .order_by('-last_modified')

            if query_set.exists():
                local_repo = query_set.first()
                if FileBrowser.repo_exists(local_repo.path):
                    return Response(data={'id': local_repo.id})

            local_repository = LocalRepositoryService.init_repository(session_key, github_repository)
            local_repository.save()

            return Response(data={'id': local_repository.id})
        else:
            return HttpResponseForbidden()
Exemplo n.º 2
0
    def get(self, request):
        access_token = take_access_token_from_session(request)

        if access_token:
            resp_data = GithubAPI.get_user_public_repositories(access_token)
            serialize = lambda x: take_keys(x, ['id', 'name', 'full_name', 'clone_url', 'description'])
            return Response(data=map(serialize, resp_data))
        else:
            return HttpResponseForbidden()