class ContentsController < ApplicationController
  before_action :find_user, :find_repository
  before_action :require_login, only: %i[create update_file delete_file]

  def create
    interactor = Gitea::CreateFileInteractor.call(current_user, content_params)
    if interactor.success?
      @file = interactor.result
    else
      render_error(interactor.error)
    end
  end

  def update_file
    interactor = Gitea::UpdateFileInteractor.call(current_user, params)
    if interactor.success?
      @file = interactor.result
    else
      render_error(interactor.error)
    end
  end

  def delete_file
    interactor = Gitea::DeleteFileInteractor.call(current_user, params)
    if interactor.success?
      @file = interactor.result
    else
      render_error(interactor.error)
    end
  end

  private
  def content_params
    params.permit(:login, :repo_identifier, :filepath, :branch, :content, :message, :new_branch)
  end

end