Class: Geet::Github::AbstractIssue
- Inherits:
-
Object
- Object
- Geet::Github::AbstractIssue
- Defined in:
- lib/geet/github/abstract_issue.rb
Overview
For clarity, in this class we keep only the identical logic between the subclasses, but other methods could be moved in here at some complexity cost.
Instance Attribute Summary collapse
-
#link ⇒ Object
readonly
Returns the value of attribute link.
-
#number ⇒ Object
readonly
Returns the value of attribute number.
-
#title ⇒ Object
readonly
Returns the value of attribute title.
Class Method Summary collapse
Instance Method Summary collapse
-
#add_labels(labels) ⇒ Object
labels: array of strings.
-
#assign_users(users) ⇒ Object
params: users: String, or Array of strings.
- #edit(milestone:) ⇒ Object
-
#initialize(number, api_interface, title, link) ⇒ AbstractIssue
constructor
A new instance of AbstractIssue.
Constructor Details
#initialize(number, api_interface, title, link) ⇒ AbstractIssue
Returns a new instance of AbstractIssue.
16 17 18 19 20 21 |
# File 'lib/geet/github/abstract_issue.rb', line 16 def initialize(number, api_interface, title, link) @number = number @api_interface = api_interface @title = title @link = link end |
Instance Attribute Details
#link ⇒ Object (readonly)
Returns the value of attribute link.
14 15 16 |
# File 'lib/geet/github/abstract_issue.rb', line 14 def link @link end |
#number ⇒ Object (readonly)
Returns the value of attribute number.
14 15 16 |
# File 'lib/geet/github/abstract_issue.rb', line 14 def number @number end |
#title ⇒ Object (readonly)
Returns the value of attribute title.
14 15 16 |
# File 'lib/geet/github/abstract_issue.rb', line 14 def title @title end |
Class Method Details
.list(api_interface, milestone: nil, assignee: nil, &type_filter) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/geet/github/abstract_issue.rb', line 25 def self.list(api_interface, milestone: nil, assignee: nil, &type_filter) api_path = 'issues' request_params = {} request_params[:milestone] = milestone.number if milestone request_params[:assignee] = assignee.username if assignee response = api_interface.send_request(api_path, params: request_params, multipage: true) abstract_issues_list = response.map do |issue_data| number = issue_data.fetch('number') title = issue_data.fetch('title') link = issue_data.fetch('html_url') new(number, api_interface, title, link) if type_filter.nil? || type_filter.call(issue_data) end abstract_issues_list.compact end |
Instance Method Details
#add_labels(labels) ⇒ Object
labels: array of strings.
57 58 59 60 61 62 |
# File 'lib/geet/github/abstract_issue.rb', line 57 def add_labels(labels) api_path = "issues/#{@number}/labels" request_data = labels @api_interface.send_request(api_path, data: request_data) end |
#assign_users(users) ⇒ Object
params:
users: String, or Array of strings.
48 49 50 51 52 53 |
# File 'lib/geet/github/abstract_issue.rb', line 48 def assign_users(users) api_path = "issues/#{@number}/assignees" request_data = { assignees: Array(users) } @api_interface.send_request(api_path, data: request_data) end |
#edit(milestone:) ⇒ Object
66 67 68 69 70 71 |
# File 'lib/geet/github/abstract_issue.rb', line 66 def edit(milestone:) request_data = { milestone: milestone } api_path = "issues/#{@number}" @api_interface.send_request(api_path, data: request_data, http_method: :patch) end |