Class: Backlog::Cli::Core

Inherits:
Object
  • Object
show all
Defined in:
lib/backlog/cli/core.rb

Constant Summary collapse

DOMAIN =
'backlog.jp'

Instance Method Summary collapse

Constructor Details

#initialize(profile) ⇒ Core

Returns a new instance of Core.



12
13
14
15
16
17
18
19
20
# 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

Instance Method Details

#add_comment(options) ⇒ Object



29
30
31
32
# 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) ⇒ Object



22
23
24
25
26
27
# 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) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
# 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) ⇒ Object



34
35
36
37
# 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) ⇒ Object



44
45
46
# File 'lib/backlog/cli/core.rb', line 44

def get_issue(options)
  @server.call('backlog.getIssue', options[:key])
end

#get_project_summariesObject



65
66
67
# File 'lib/backlog/cli/core.rb', line 65

def get_project_summaries
  @server.call('backlog.getProjectSummaries')
end

#get_projectsObject



61
62
63
# File 'lib/backlog/cli/core.rb', line 61

def get_projects
  @server.call('backlog.getProjects')
end

#get_rss(project_key) ⇒ Object



73
74
75
76
77
78
# 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) ⇒ Object



69
70
71
# 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) ⇒ Object



39
40
41
42
# 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) ⇒ Object



80
81
82
83
# File 'lib/backlog/cli/core.rb', line 80

def urls(body)
  regex = /https?\:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+/
  body.scan(regex).uniq.sort.reverse
end