From 0b67606af6b339b6d3a84ffd981bf7d850e3b93f Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 7 Nov 2013 18:53:09 +0200 Subject: New API: create file in repo Signed-off-by: Dmitriy Zaporozhets --- lib/api/files.rb | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 lib/api/files.rb (limited to 'lib/api/files.rb') diff --git a/lib/api/files.rb b/lib/api/files.rb new file mode 100644 index 00000000000..5918b6e5ca0 --- /dev/null +++ b/lib/api/files.rb @@ -0,0 +1,41 @@ +module API + # Projects API + class Files < Grape::API + before { authenticate! } + before { authorize! :push_code, user_project } + + resource :projects do + # Create new file in repository + # + # Parameters: + # file_name (required) - The name of new file. Ex. class.rb + # file_path (optiona) - The path to new file. Ex. lib/ + # branch_name (required) - The name of branch + # content (required) - File content + # commit_message (required) - Commit message + # + # Example Request: + # POST /projects/:id/repository/files + post ":id/repository/files" do + required_attributes! [:file_name, :branch_name, :content] + attrs = attributes_for_keys [:file_name, :file_path, :branch_name, :content] + branch_name = attrs.delete(:branch_name) + file_path = attrs.delete(:file_path) + result = ::Files::CreateContext.new(user_project, current_user, attrs, branch_name, file_path).execute + + if result[:status] == :success + status(201) + + { + file_name: attrs[:file_name], + file_path: file_path, + branch_name: branch_name + } + else + render_api_error!(result[:error], 400) + end + end + end + end +end + -- cgit v1.2.1