Codebase list ruby-gitlab / 56aea8b lib / gitlab / client / notes.rb
56aea8b

Tree @56aea8b (Download .tar.gz)

notes.rb @56aea8b

9962458
 
dab36f1
 
 
 
 
 
 
 
 
 
 
 
 
9962458
dab36f1
 
 
 
 
 
 
 
 
 
 
 
 
9962458
dab36f1
 
 
 
 
 
 
 
 
 
 
 
 
9962458
dab36f1
 
 
 
 
 
 
 
 
 
 
 
 
9962458
dab36f1
 
9962458
dab36f1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9962458
04d932e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9962458
04d932e
 
 
 
 
 
 
 
c321896
04d932e
 
c321896
04d932e
 
 
 
 
 
 
 
 
 
c321896
04d932e
 
c321896
04d932e
 
 
 
 
 
 
 
 
 
c321896
04d932e
 
c321896
04d932e
 
 
 
 
 
 
 
 
 
c321896
04d932e
 
c321896
04d932e
9962458
c321896
 
 
 
 
 
 
87adcfe
c321896
 
 
 
 
dab36f1
 
# frozen_string_literal: true

class Gitlab::Client
  # Defines methods related to notes.
  # @see https://docs.gitlab.com/ce/api/notes.html
  module Notes
    # Gets a list of projects notes.
    #
    # @example
    #   Gitlab.notes(5)
    #
    # @param [Integer] project The ID of a project.
    # @option options [Integer] :page The page number.
    # @option options [Integer] :per_page The number of results per page.
    # @return [Array<Gitlab::ObjectifiedHash>]
    def notes(project, options = {})
      get("/projects/#{url_encode project}/notes", query: options)
    end

    # Gets a list of notes for a issue.
    #
    # @example
    #   Gitlab.issue_notes(5, 10)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] issue The ID of an issue.
    # @option options [Integer] :page The page number.
    # @option options [Integer] :per_page The number of results per page.
    # @return [Array<Gitlab::ObjectifiedHash>]
    def issue_notes(project, issue, options = {})
      get("/projects/#{url_encode project}/issues/#{issue}/notes", query: options)
    end

    # Gets a list of notes for a snippet.
    #
    # @example
    #   Gitlab.snippet_notes(5, 1)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] snippet The ID of a snippet.
    # @option options [Integer] :page The page number.
    # @option options [Integer] :per_page The number of results per page.
    # @return [Array<Gitlab::ObjectifiedHash>]
    def snippet_notes(project, snippet, options = {})
      get("/projects/#{url_encode project}/snippets/#{snippet}/notes", query: options)
    end

    # Gets a list of notes for a merge request.
    #
    # @example
    #   Gitlab.merge_request_notes(5, 1)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] merge_request The ID of a merge request.
    # @option options [Integer] :page The page number.
    # @option options [Integer] :per_page The number of results per page.
    # @return [Array<Gitlab::ObjectifiedHash>]
    def merge_request_notes(project, merge_request, options = {})
      get("/projects/#{url_encode project}/merge_requests/#{merge_request}/notes", query: options)
    end
    alias merge_request_comments merge_request_notes

    # Gets a single wall note.
    #
    # @example
    #   Gitlab.note(5, 15)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def note(project, id)
      get("/projects/#{url_encode project}/notes/#{id}")
    end

    # Gets a single issue note.
    #
    # @example
    #   Gitlab.issue_note(5, 10, 1)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] issue The ID of an issue.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def issue_note(project, issue, id)
      get("/projects/#{url_encode project}/issues/#{issue}/notes/#{id}")
    end

    # Gets a single snippet note.
    #
    # @example
    #   Gitlab.snippet_note(5, 11, 3)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] snippet The ID of a snippet.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def snippet_note(project, snippet, id)
      get("/projects/#{url_encode project}/snippets/#{snippet}/notes/#{id}")
    end

    # Gets a single merge_request note.
    #
    # @example
    #   Gitlab.merge_request_note(5, 11, 3)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] merge_request The ID of a merge_request.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def merge_request_note(project, merge_request, id)
      get("/projects/#{url_encode project}/merge_requests/#{merge_request}/notes/#{id}")
    end

    # Creates a new wall note.
    #
    # @example
    #   Gitlab.create_note(5, 'This is a wall note!')
    #
    # @param  [Integer, String] project The ID or name of a project.
    # @param  [String] body The body of a note.
    # @return [Gitlab::ObjectifiedHash] Information about created note.
    def create_note(project, body)
      post("/projects/#{url_encode project}/notes", body: { body: body })
    end

    # Creates a new issue note.
    #
    # @example
    #   Gitlab.create_issue_note(6, 1, 'Adding a note to my issue.')
    #
    # @param  [Integer, String] project The ID or name of a project.
    # @param  [Integer] issue The ID of an issue.
    # @param  [String] body The body of a note.
    # @return [Gitlab::ObjectifiedHash] Information about created note.
    def create_issue_note(project, issue, body)
      post("/projects/#{url_encode project}/issues/#{issue}/notes", body: { body: body })
    end

    # Creates a new snippet note.
    #
    # @example
    #   Gitlab.create_snippet_note(3, 2, 'Look at this awesome snippet!')
    #
    # @param  [Integer, String] project The ID or name of a project.
    # @param  [Integer] snippet The ID of a snippet.
    # @param  [String] body The body of a note.
    # @return [Gitlab::ObjectifiedHash] Information about created note.
    def create_snippet_note(project, snippet, body)
      post("/projects/#{url_encode project}/snippets/#{snippet}/notes", body: { body: body })
    end

    # Creates a new note for a single merge request.
    #
    # @example
    #   Gitlab.create_merge_request_note(5, 3, 'This MR is ready for review.')
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] merge_request The ID of a merge request.
    # @param [String] body The content of a note.
    def create_merge_request_note(project, merge_request, body)
      post("/projects/#{url_encode project}/merge_requests/#{merge_request}/notes", body: { body: body })
    end
    alias create_merge_request_comment create_merge_request_note

    # Deletes a wall note.
    #
    # @example
    #   Gitlab.delete_note(5, 15)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def delete_note(project, id)
      delete("/projects/#{url_encode project}/notes/#{id}")
    end

    # Deletes an issue note.
    #
    # @example
    #   Gitlab.delete_issue_note(5, 10, 1)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] issue The ID of an issue.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def delete_issue_note(project, issue, id)
      delete("/projects/#{url_encode project}/issues/#{issue}/notes/#{id}")
    end

    # Deletes a snippet note.
    #
    # @example
    #   Gitlab.delete_snippet_note(5, 11, 3)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] snippet The ID of a snippet.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def delete_snippet_note(project, snippet, id)
      delete("/projects/#{url_encode project}/snippets/#{snippet}/notes/#{id}")
    end

    # Deletes a merge_request note.
    #
    # @example
    #   Gitlab.delete_merge_request_note(5, 11, 3)
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] merge_request The ID of a merge_request.
    # @param [Integer] id The ID of a note.
    # @return [Gitlab::ObjectifiedHash]
    def delete_merge_request_note(project, merge_request, id)
      delete("/projects/#{url_encode project}/merge_requests/#{merge_request}/notes/#{id}")
    end
    alias delete_merge_request_comment delete_merge_request_note

    # Modifies a wall note.
    #
    # @example
    #   Gitlab.edit_note(5, 15, 'This is an edited note')
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] id The ID of a note.
    # @param [String] body The content of a note.
    # @return [Gitlab::ObjectifiedHash]
    def edit_note(project, id, body)
      put("/projects/#{url_encode project}/notes/#{id}", body: note_content(body))
    end

    # Modifies an issue note.
    #
    # @example
    #   Gitlab.edit_issue_note(5, 10, 1, 'This is an edited issue note')
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] issue The ID of an issue.
    # @param [Integer] id The ID of a note.
    # @param [String] body The content of a note.
    # @return [Gitlab::ObjectifiedHash]
    def edit_issue_note(project, issue, id, body)
      put("/projects/#{url_encode project}/issues/#{issue}/notes/#{id}", body: note_content(body))
    end

    # Modifies a snippet note.
    #
    # @example
    #   Gitlab.edit_snippet_note(5, 11, 3, 'This is an edited snippet note')
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] snippet The ID of a snippet.
    # @param [Integer] id The ID of a note.
    # @param [String] body The content of a note.
    # @return [Gitlab::ObjectifiedHash]
    def edit_snippet_note(project, snippet, id, body)
      put("/projects/#{url_encode project}/snippets/#{snippet}/notes/#{id}", body: note_content(body))
    end

    # Modifies a merge_request note.
    #
    # @example
    #   Gitlab.edit_merge_request_note(5, 11, 3, 'This is an edited merge request note')
    #
    # @param [Integer] project The ID of a project.
    # @param [Integer] merge_request The ID of a merge_request.
    # @param [Integer] id The ID of a note.
    # @param [String] body The content of a note.
    # @return [Gitlab::ObjectifiedHash]
    def edit_merge_request_note(project, merge_request, id, body)
      put("/projects/#{url_encode project}/merge_requests/#{merge_request}/notes/#{id}", body: note_content(body))
    end
    alias edit_merge_request_comment edit_merge_request_note

    private

    # TODO: Remove this method after a couple deprecation cycles.  Replace calls with the code
    # in the 'else'.
    def note_content(body)
      if body.is_a?(Hash)
        warn 'Passing the note body as a Hash is deprecated.  You should just pass the String.'
        body
      else
        { body: body }
      end
    end
  end
end