module Github::PullRequests::Comments

def _validate_reply_to(params)

To let user know that the params supplied are wrong before request is made
def _validate_reply_to(params)
  if params['in_reply_to'] && !_validate_inputs(%w[ body in_reply_to ], params)
    raise ArgumentError, "Required params are: #{%w[ body in_reply_to].join(',')}"
  elsif !_validate_inputs(VALID_REQUEST_COM_PARAM_NAMES - %w[ in_reply_to ], params)
    raise ArgumentError, "Required params are: #{VALID_REQUEST_COM_PARAM_NAMES.join(', ')}"
  end
end

def comment(user_name, repo_name, comment_id, params={})


@github.pull_requests.comment 'user-name', 'repo-name', 'comment-id'
@github = Github.new
= Examples
Get a single comment for pull requests
def comment(user_name, repo_name, comment_id, params={})
  _update_user_repo_params(user_name, repo_name)
  _validate_user_repo_params(user, repo) unless user? && repo?
  _validate_presence_of comment_id
  _normalize_params_keys(params)
  # _merge_mime_type(:pull_comment, params)
  get("/repos/#{user}/#{repo}/pulls/comments/#{comment_id}", params)
end

def comments(user_name, repo_name, request_id, params={})


@github.pull_requests.comments 'user-name', 'repo-name', 'request-id'
@github = Github.new
= Examples

List comments on a pull request
def comments(user_name, repo_name, request_id, params={})
  _update_user_repo_params(user_name, repo_name)
  _validate_user_repo_params(user, repo) unless user? && repo?
  _validate_presence_of request_id
  _normalize_params_keys(params)
  # _merge_mime_type(:pull_comment, params)
  response = get("/repos/#{user}/#{repo}/pulls/#{request_id}/comments", params)
  return response unless block_given?
  response.each { |el| yield el }
end

def create_comment(user_name, repo_name, request_id, params={})


"in_reply_to" => 4
"body" => "Nice change",
@github.pull_requests.create_comment 'user-name','repo-name','request-id',
@github = Github.new
= Examples

* :in_reply_to - Required number - comment id to reply to.
* :body - Required string
an existing Pull Request Comment like this
Instead of passing commit_id, path, and position you can reply to
= Alternative Inputs

"position" => 4
"path" => "file1.txt",
"commit_id" => "6dcb09b5b57875f334f61aebed695e2e4193db5e",
"body" => "Nice change",
@github.pull_requests.create_comment 'user-name','repo-name','request-id',
@github = Github.new
= Examples

* :position - Required number - Line index in the diff to comment on
* :path - Required string - Relative path of the file to comment on.
* :commit_id - Required string - sha of the commit to comment on.
* :body - Required string
= Inputs

Create a pull request comment
def create_comment(user_name, repo_name, request_id, params={})
  _update_user_repo_params(user_name, repo_name)
  _validate_user_repo_params(user, repo) unless user? && repo?
  _validate_presence_of request_id
  _normalize_params_keys(params)
  # _merge_mime_type(:pull_comment, params)
  _filter_params_keys(VALID_REQUEST_COM_PARAM_NAMES, params)
  # _validate_reply_to(params)
  post("/repos/#{user}/#{repo}/pulls/#{request_id}/comments", params)
end

def delete_comment(user_name, repo_name, comment_id, params={})


@github.pull_requests.delete_comment 'user-name', 'repo-name','comment-id'
@github = Github.new
= Examples

Delete a pull request comment
def delete_comment(user_name, repo_name, comment_id, params={})
  _update_user_repo_params(user_name, repo_name)
  _validate_user_repo_params(user, repo) unless user? && repo?
  _validate_presence_of comment_id
  _normalize_params_keys(params)
  # _merge_mime_type(:pull_comment, params)
  delete("/repos/#{user}/#{repo}/pulls/comments/#{comment_id}", params)
end

def edit_comment(user_name, repo_name, comment_id, params={})


"body" => "Nice change"
@github.pull_requests.edit_comment 'user-name', 'repo-name','comment-id',
@github = Github.new
= Examples

* :body - Required string
= Inputs

Edit a pull request comment
def edit_comment(user_name, repo_name, comment_id, params={})
  _update_user_repo_params(user_name, repo_name)
  _validate_user_repo_params(user, repo) unless user? && repo?
  _validate_presence_of comment_id
  _normalize_params_keys(params)
  # _merge_mime_type(:pull_comment, params)
  _filter_params_keys(VALID_REQUEST_COM_PARAM_NAMES, params)
  patch("/repos/#{user}/#{repo}/pulls/comments/#{comment_id}", params)
end