From 16687f16d78ea47b4c18def0934088fabd4eeeb9 Mon Sep 17 00:00:00 2001 From: carlad Date: Wed, 18 Nov 2015 18:47:59 +0100 Subject: [PATCH] refining work on star/unstar endpoints --- lib/travis/api/v3.rb | 3 +++ lib/travis/api/v3/services/repository/star.rb | 5 ++++- lib/travis/api/v3/services/repository/unstar.rb | 7 ++++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/travis/api/v3.rb b/lib/travis/api/v3.rb index 8c8be745..559fb09c 100644 --- a/lib/travis/api/v3.rb +++ b/lib/travis/api/v3.rb @@ -35,6 +35,9 @@ module Travis NotImplemented = ServerError .create('request not (yet) implemented', status: 501) RequestLimitReached = ClientError .create('request limit reached for resource', status: 429) AlreadySyncing = ClientError .create('sync already in progress', status: 409) + AlreadyStarred = ClientError .create('repository is already starred', status: 409) + NotStarred = ClientError .create('repository is not a starred repository') + end end end diff --git a/lib/travis/api/v3/services/repository/star.rb b/lib/travis/api/v3/services/repository/star.rb index 814b588b..8ec9659c 100644 --- a/lib/travis/api/v3/services/repository/star.rb +++ b/lib/travis/api/v3/services/repository/star.rb @@ -3,8 +3,11 @@ module Travis::API::V3 def run! raise LoginRequired unless access_control.logged_in? or access_control.full_access? raise NotFound unless repository = find(:repository) + starred = Models::StarredRepository.where(repository_id: repository.id, user_id: access_control.user.id).first + raise AlreadyStarred unless starred.nil? + Models::StarredRepository.create(repository_id: repository.id, user_id: access_control.user.id) - # repository #TODO what do we want to return??? + repository #TODO what do we want to return??? end # def check_access(repository) diff --git a/lib/travis/api/v3/services/repository/unstar.rb b/lib/travis/api/v3/services/repository/unstar.rb index d6734f59..9b19fcb4 100644 --- a/lib/travis/api/v3/services/repository/unstar.rb +++ b/lib/travis/api/v3/services/repository/unstar.rb @@ -3,9 +3,10 @@ module Travis::API::V3 def run! raise LoginRequired unless access_control.logged_in? or access_control.full_access? raise NotFound unless repository = find(:repository) - Models::StarredRepository.where(repository_id: repository.id, user_id: access_control.user.id).delete - - # repository #TODO what do we want to return??? + starred_repo = Models::StarredRepository.where(repository_id: repository.id, user_id: access_control.user.id) + raise NotStarred unless !starred_repo.nil? + starred_repo.first.delete + repository #TODO what do we want to return??? end # def check_access(repository)