diff --git a/lib/travis/api/v3/queries/organization.rb b/lib/travis/api/v3/queries/organization.rb index 218be855..adba5923 100644 --- a/lib/travis/api/v3/queries/organization.rb +++ b/lib/travis/api/v3/queries/organization.rb @@ -1,9 +1,10 @@ module Travis::API::V3 class Queries::Organization < Query - params :id, :login + params :id, :login, :github_id def find return Models::Organization.find_by_id(id) if id + return Models::Organization.find_by_github_id(github_id) if github_id return Models::Organization.where('lower(login) = ?'.freeze, login.downcase).first if login raise WrongParams, 'missing organization.id or organization.login'.freeze end diff --git a/lib/travis/api/v3/queries/owner.rb b/lib/travis/api/v3/queries/owner.rb index c57ee7c4..0494573b 100644 --- a/lib/travis/api/v3/queries/owner.rb +++ b/lib/travis/api/v3/queries/owner.rb @@ -9,6 +9,7 @@ module Travis::API::V3 def query(type, main_type: self.main_type, params: self.params) main_type = type if main_type == :owner params = params.merge("#{type}.login" => params["owner.login".freeze]) if params["owner.login".freeze] + params = params.merge("#{type}.github_id" => params["owner.github_id".freeze]) if params["owner.github_id".freeze] Queries[type].new(params, main_type, service: @service) end diff --git a/lib/travis/api/v3/queries/user.rb b/lib/travis/api/v3/queries/user.rb index 5f5760c2..47bd7f02 100644 --- a/lib/travis/api/v3/queries/user.rb +++ b/lib/travis/api/v3/queries/user.rb @@ -1,9 +1,10 @@ module Travis::API::V3 class Queries::User < Query - params :id, :login, :email + params :id, :login, :email, :github_id def find return Models::User.find_by_id(id) if id + return Models::User.find_by_github_id(github_id) if github_id return Models::User.where('lower(login) = ?'.freeze, login.downcase).first if login return find_by_email(email) if email raise WrongParams, 'missing user.id or user.login'.freeze diff --git a/lib/travis/api/v3/router.rb b/lib/travis/api/v3/router.rb index 8e39fc15..cdeaedf0 100644 --- a/lib/travis/api/v3/router.rb +++ b/lib/travis/api/v3/router.rb @@ -12,6 +12,7 @@ module Travis::API::V3 return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze access_control = AccessControl.new(env) factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze]) + p factory env_params = params(env) raise NotFound unless factory diff --git a/lib/travis/api/v3/routes.rb b/lib/travis/api/v3/routes.rb index b9765166..483e2680 100644 --- a/lib/travis/api/v3/routes.rb +++ b/lib/travis/api/v3/routes.rb @@ -48,7 +48,7 @@ module Travis::API::V3 end resource :owner do - route '/owner/({owner.login}|{user.login}|{organization.login})' + route '/owner/({owner.login}|{user.login}|{organization.login}|github_id/{owner.github_id})' get :find get :repositories, '/repos' end