From c23eb4082948322a1b690e0850c09bfc8df81589 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Sun, 16 Sep 2012 17:52:06 +0300 Subject: SSH Keys API implemented --- lib/api/entities.rb | 6 ++++++ lib/api/keys.rb | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 lib/api/keys.rb (limited to 'lib/api') diff --git a/lib/api/entities.rb b/lib/api/entities.rb index b50d683f940..13a48e12019 100644 --- a/lib/api/entities.rb +++ b/lib/api/entities.rb @@ -48,5 +48,11 @@ module Gitlab expose :assignee, :author, using: Entities::UserBasic expose :closed, :updated_at, :created_at end + + class Key < Grape::Entity + expose :id, + :title, + :key + end end end diff --git a/lib/api/keys.rb b/lib/api/keys.rb new file mode 100644 index 00000000000..96ab7029fe5 --- /dev/null +++ b/lib/api/keys.rb @@ -0,0 +1,44 @@ +module Gitlab + # Keys API + class Keys < Grape::API + before { authenticate! } + resource :keys do + # Get currently authenticated user's keys + # + # Example Request: + # GET /keys + get do + present current_user.keys, with: Entities::Key + end + # Add new ssh key to currently authenticated user + # + # Parameters: + # key (required) - New SSH Key + # title (required) - New SSH Key's title + # Example Request: + # POST /keys + post do + key = current_user.keys.new( + title: params[:title], + key: params[:key] + ) + if key.save + present key, with: Entities::Key + else + not_found! + end + end + # Delete existed ssh key of currently authenticated user + # + # Parameters: + # id (required) - SSH Key ID + # Example Request: + # DELETE /keys/:id + delete "/:id" do + key = current_user.keys.find params[:id] + key.delete + end + end + end +end + -- cgit v1.2.1