class APIClient

Attributes

password[R]
url_base[R]
user[R]

Public Class Methods

new(url_base, user, password) click to toggle source
# File lib/jira/worklog/api_client.rb, line 4
def initialize(url_base, user, password)
  @user = user
  @password = password
  @url_base = url_base
end

Public Instance Methods

add_worklog(worklog) click to toggle source
# File lib/jira/worklog/api_client.rb, line 20
def add_worklog(worklog)
  req = {
      comment: worklog[:comment],
      started: worklog[:date].strftime('%Y-%m-%d') + 'T07:00:00.000+0100',
      timeSpentSeconds: worklog[:duration]
  }
  data = post_request("issue/#{worklog[:issue]}/worklog", req.to_json)
  # puts "added: #{worklog.inspect}"
  data['id']
end
delete_worklog(issue, worklog_id) click to toggle source
# File lib/jira/worklog/api_client.rb, line 16
def delete_worklog(issue, worklog_id)
  delete_request("issue/#{issue}/worklog/#{worklog_id}")
end
issues() click to toggle source
# File lib/jira/worklog/api_client.rb, line 11
def issues
  data = request("search?jql=assignee=#{user}")
  data['issues'].map { |issue| {key: issue['key'], id: issue['id'], summary: issue['fields']['summary']} }
end
worklogs(issue) click to toggle source
# File lib/jira/worklog/api_client.rb, line 32
def worklogs(issue)
  data = request("issue/#{issue}/worklog")
  # pp data
  data['worklogs'].map { |worklog|
    {
        duration: worklog['timeSpentSeconds'],
        comment: worklog['comment'],
        issue_id: worklog['issueId'],
        id: worklog['id'],
        date: Date.strptime(worklog['started'][0..9], '%Y-%m-%d')
    }
  }
end

Private Instance Methods

delete_request(path) click to toggle source
# File lib/jira/worklog/api_client.rb, line 53
def delete_request(path)
  url = url_base + path
  RestClient::Request.execute method: :delete, url: url, user: user, password: password, :verify_ssl => false
end
post_request(path, payload) click to toggle source
# File lib/jira/worklog/api_client.rb, line 58
def post_request(path, payload)
  url = url_base + path
  resp = RestClient::Request.execute method: :post, url: url, user: user, password: password, :verify_ssl => false, payload: payload, headers: {'Content-Type' => 'application/json; charset=utf-8'}
  JSON.parse resp.body
end
request(path) click to toggle source
# File lib/jira/worklog/api_client.rb, line 47
def request(path)
  url = url_base + path
  resp = RestClient::Request.execute method: :get, url: url, user: user, password: password, :verify_ssl => false
  JSON.parse resp.body
end