class Backlog::Cli::Core

Constants

DOMAIN

Public Class Methods

new(profile) click to toggle source
# File lib/backlog/cli/core.rb, line 12
def initialize(profile)
  info = YAML.load_file("#{ENV['HOME']}/.backlogrc")[profile]
  @user = info['user']
  @space = info['space']
  @password = info['password']
  @assigner_id = info['assigner_id']
  api_url = "https://#{@user}:#{@password}@#{@space}.#{DOMAIN}/XML-RPC"
  @server = XMLRPC::Client.new2(api_url)
end

Public Instance Methods

add_comment(options) click to toggle source
# File lib/backlog/cli/core.rb, line 29
def add_comment(options)
  args = { key: options[:key], content: options[:content] }
  @server.call('backlog.addComment', args)
end
create_issue(project_key, options) click to toggle source
# File lib/backlog/cli/core.rb, line 22
def create_issue(project_key, options)
  args = options.dup
  args[:projectId] = get_project(project_key)['id']
  args[:assignerId] = options[:assigner_id].nil? ? @assigner_id : options[:assigner_id]
  @server.call('backlog.createIssue', args)
end
find_issue(project_key, options) click to toggle source
# File lib/backlog/cli/core.rb, line 48
def find_issue(project_key, options)
  args = options.dup
  args[:projectId] = get_project(project_key)['id']
  args[:statusId] = [1, 2, 3]
  args[:sort] = 'UPDATED'
  if options[:all]
    args.delete(:assignerId)
  else
    args[:assignerId] = @assigner_id
  end
  @server.call('backlog.findIssue', args)
end
get_comments(options) click to toggle source
# File lib/backlog/cli/core.rb, line 34
def get_comments(options)
  issue_id = get_issue(options)['id']
  @server.call('backlog.getComments', issue_id)
end
get_issue(options) click to toggle source
# File lib/backlog/cli/core.rb, line 44
def get_issue(options)
  @server.call('backlog.getIssue', options[:key])
end
get_project_summaries() click to toggle source
# File lib/backlog/cli/core.rb, line 65
def get_project_summaries
  @server.call('backlog.getProjectSummaries')
end
get_projects() click to toggle source
# File lib/backlog/cli/core.rb, line 61
def get_projects
  @server.call('backlog.getProjects')
end
get_rss(project_key) click to toggle source
# File lib/backlog/cli/core.rb, line 73
def get_rss(project_key)
  feed = FeedNormalizer::FeedNormalizer.parse open(
    "https://#{@space}.#{DOMAIN}/rss/#{project_key}", http_basic_authentication: [@user, @password]
  )
  feed.items
end
get_users(project_key) click to toggle source
# File lib/backlog/cli/core.rb, line 69
def get_users(project_key)
  @server.call('backlog.getUsers', get_project(project_key)['id'])
end
update_issue(options) click to toggle source
# File lib/backlog/cli/core.rb, line 39
def update_issue(options)
  args = { key: options[:key], comment: options[:comment] }
  @server.call('backlog.updateIssue', args)
end
urls(body) click to toggle source
# File lib/backlog/cli/core.rb, line 80
def urls(body)
  regex = /https?\:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/
  body.scan(regex).uniq.sort.reverse
end

Private Instance Methods

get_project(project_key) click to toggle source
# File lib/backlog/cli/core.rb, line 87
def get_project(project_key)
  @server.call('backlog.getProject', project_key)
end