Class: Klondikemarlen::JiraApi::Client
- Inherits:
-
Object
- Object
- Klondikemarlen::JiraApi::Client
- Defined in:
- lib/klondikemarlen/jira_api/client.rb
Instance Method Summary collapse
- #create_comment(issue_key:, document:) ⇒ Object (also: #post_comment)
- #create_markdown_comment(issue_key:, markdown:, allowed_image_hosts: []) ⇒ Object (also: #post_markdown_comment)
- #delete_comment(issue_key:, comment_id:) ⇒ Object
- #get_comment(issue_key:, comment_id:) ⇒ Object
-
#initialize(base_url:, email:, api_token:) ⇒ Client
constructor
A new instance of Client.
- #list_comments(issue_key:, start_at: nil, max_results: nil) ⇒ Object
- #update_comment(issue_key:, comment_id:, document:) ⇒ Object
- #update_markdown_comment(issue_key:, comment_id:, markdown:, allowed_image_hosts: []) ⇒ Object
- #upload_attachment(issue_key:, io:, filename:, content_type:) ⇒ Object
Constructor Details
#initialize(base_url:, email:, api_token:) ⇒ Client
Returns a new instance of Client.
12 13 14 15 16 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 12 def initialize(base_url:, email:, api_token:) @base_url = base_url.to_s.delete_suffix("/") @email = email @api_token = api_token end |
Instance Method Details
#create_comment(issue_key:, document:) ⇒ Object Also known as: post_comment
33 34 35 36 37 38 39 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 33 def create_comment(issue_key:, document:) uri = api_uri("/issue/#{issue_key}/comment") request = Net::HTTP::Post.new(uri) request.body = JSON.dump({ "body" => document }) json_request(request, uri) end |
#create_markdown_comment(issue_key:, markdown:, allowed_image_hosts: []) ⇒ Object Also known as: post_markdown_comment
57 58 59 60 61 62 63 64 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 57 def create_markdown_comment(issue_key:, markdown:, allowed_image_hosts: []) document = markdown_document( issue_key: issue_key, markdown: markdown, allowed_image_hosts: allowed_image_hosts ) create_comment(issue_key: issue_key, document: document) end |
#delete_comment(issue_key:, comment_id:) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 49 def delete_comment(issue_key:, comment_id:) uri = api_uri("/issue/#{issue_key}/comment/#{comment_id}") response = authenticated_request(Net::HTTP::Delete.new(uri), uri) return true if response.code.to_i == 204 raise "Failed to delete Jira comment #{comment_id} for #{issue_key}: #{response.code} #{response.body}" end |
#get_comment(issue_key:, comment_id:) ⇒ Object
28 29 30 31 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 28 def get_comment(issue_key:, comment_id:) uri = api_uri("/issue/#{issue_key}/comment/#{comment_id}") json_request(Net::HTTP::Get.new(uri), uri) end |
#list_comments(issue_key:, start_at: nil, max_results: nil) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 18 def list_comments(issue_key:, start_at: nil, max_results: nil) uri = api_uri("/issue/#{issue_key}/comment") query = {} query["startAt"] = start_at unless start_at.nil? query["maxResults"] = max_results unless max_results.nil? uri.query = URI.encode_www_form(query) unless query.empty? json_request(Net::HTTP::Get.new(uri), uri) end |
#update_comment(issue_key:, comment_id:, document:) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 41 def update_comment(issue_key:, comment_id:, document:) uri = api_uri("/issue/#{issue_key}/comment/#{comment_id}") request = Net::HTTP::Put.new(uri) request.body = JSON.dump({ "body" => document }) json_request(request, uri) end |
#update_markdown_comment(issue_key:, comment_id:, markdown:, allowed_image_hosts: []) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 66 def update_markdown_comment(issue_key:, comment_id:, markdown:, allowed_image_hosts: []) document = markdown_document( issue_key: issue_key, markdown: markdown, allowed_image_hosts: allowed_image_hosts ) update_comment(issue_key: issue_key, comment_id: comment_id, document: document) end |
#upload_attachment(issue_key:, io:, filename:, content_type:) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/klondikemarlen/jira_api/client.rb', line 78 def (issue_key:, io:, filename:, content_type:) uri = api_uri("/issue/#{issue_key}/attachments") request = Net::HTTP::Post::Multipart.new( uri.request_uri, "file" => UploadIO.new(io, content_type, filename) ) request.basic_auth(@email, @api_token) request["X-Atlassian-Token"] = "no-check" response = http_request(uri, request) unless response.code.to_i.between?(200, 299) raise "Failed to upload Jira attachment for #{issue_key}: #{response.code} #{response.body}" end JSON.parse(response.body).first end |