From c96e8e2ff1113feb69a91d8095c0cf3eaff5f4e8 Mon Sep 17 00:00:00 2001 From: carlad Date: Mon, 16 Nov 2015 18:14:31 +0100 Subject: [PATCH] initial work on star and unstar endpoints --- lib/travis/api/v3/models/starred_repository.rb | 5 +++++ lib/travis/api/v3/models/user.rb | 1 + lib/travis/api/v3/permissions/repository.rb | 8 ++++++++ lib/travis/api/v3/queries/starred_repositories.rb | 10 ++++++++++ lib/travis/api/v3/routes.rb | 2 ++ lib/travis/api/v3/services/repository/star.rb | 11 +++++++++++ lib/travis/api/v3/services/repository/unstar.rb | 11 +++++++++++ 7 files changed, 48 insertions(+) create mode 100644 lib/travis/api/v3/models/starred_repository.rb create mode 100644 lib/travis/api/v3/queries/starred_repositories.rb create mode 100644 lib/travis/api/v3/services/repository/star.rb create mode 100644 lib/travis/api/v3/services/repository/unstar.rb diff --git a/lib/travis/api/v3/models/starred_repository.rb b/lib/travis/api/v3/models/starred_repository.rb new file mode 100644 index 00000000..80d13072 --- /dev/null +++ b/lib/travis/api/v3/models/starred_repository.rb @@ -0,0 +1,5 @@ +module Travis::API::V3 + class Models::StarredRepository < Model + has_many :repositories + end +end \ No newline at end of file diff --git a/lib/travis/api/v3/models/user.rb b/lib/travis/api/v3/models/user.rb index 626996c0..36f0a99d 100644 --- a/lib/travis/api/v3/models/user.rb +++ b/lib/travis/api/v3/models/user.rb @@ -6,6 +6,7 @@ module Travis::API::V3 has_many :tokens, dependent: :destroy has_many :organizations, through: :memberships has_many :repositories, as: :owner + has_many :starred_repositories, #TODO has_one :subscription, as: :owner serialize :github_oauth_token, Extensions::EncryptedColumn.new(disable: true) diff --git a/lib/travis/api/v3/permissions/repository.rb b/lib/travis/api/v3/permissions/repository.rb index 75f47597..5cfbf5bd 100644 --- a/lib/travis/api/v3/permissions/repository.rb +++ b/lib/travis/api/v3/permissions/repository.rb @@ -10,6 +10,14 @@ module Travis::API::V3 write? end + def star? + write? + end + + def unstar? + write? + end + def create_request? write? end diff --git a/lib/travis/api/v3/queries/starred_repositories.rb b/lib/travis/api/v3/queries/starred_repositories.rb new file mode 100644 index 00000000..6437f3c6 --- /dev/null +++ b/lib/travis/api/v3/queries/starred_repositories.rb @@ -0,0 +1,10 @@ +module Travis::API::V3 + class Queries::StarredRepositories < Query + + def for_user(user) + all.where(<<-SQL, 'User'.freeze, user.id) + SQL + end + + end +end diff --git a/lib/travis/api/v3/routes.rb b/lib/travis/api/v3/routes.rb index 0f80050a..4243edb4 100644 --- a/lib/travis/api/v3/routes.rb +++ b/lib/travis/api/v3/routes.rb @@ -69,6 +69,8 @@ module Travis::API::V3 post :enable, '/enable' post :disable, '/disable' + post :star, '/star' + post :unstar, '/unstar' resource :branch do route '/branch/{branch.name}' diff --git a/lib/travis/api/v3/services/repository/star.rb b/lib/travis/api/v3/services/repository/star.rb new file mode 100644 index 00000000..6ebf8e05 --- /dev/null +++ b/lib/travis/api/v3/services/repository/star.rb @@ -0,0 +1,11 @@ +module Travis::API::V3 + class Services::Repository::Star < Service + def run! + super(true) + end + + def check_access(repository) + access_control.permissions(repository).star! + end + end +end diff --git a/lib/travis/api/v3/services/repository/unstar.rb b/lib/travis/api/v3/services/repository/unstar.rb new file mode 100644 index 00000000..3ad92340 --- /dev/null +++ b/lib/travis/api/v3/services/repository/unstar.rb @@ -0,0 +1,11 @@ +module Travis::API::V3 + class Services::Repository::Unstar < Service + def run! + super(true) + end + + def check_access(repository) + access_control.permissions(repository).unstar! + end + end +end