Skip to content

Commit c1fa4d6

Browse files
committed
output current worktime
1 parent 2830092 commit c1fa4d6

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

lib/redmine_cli.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require 'redmine_cli/cli'
66
require 'redmine_cli/ui'
77
require 'redmine_cli/version'
8+
require 'redmine_cli/worktime'
89

910
module RedmineCLI
1011
class << self

lib/redmine_cli/tasks/time.rb

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,26 @@ def out
1616
request = Net::HTTP::Get.new("#{url.path}?#{url.query}")
1717
response = http.start { |http| http.request(request) }
1818

19-
if response.kind_of?(Net::HTTPSuccess)
19+
if response.kind_of?(Net::HTTPFound)
2020
puts "Signed out."
2121
else
2222
puts "Error: " + response.class.name
2323
end
2424
end
2525

26+
desc "current", ""
27+
def current
28+
if worktime = Worktime.current
29+
if worktime.issue?
30+
puts "Signed in for ##{worktime.issue_id}: #{worktime.issue_subject}."
31+
else
32+
puts "Signed in."
33+
end
34+
else
35+
puts "Not signed in."
36+
end
37+
end
38+
2639
private
2740

2841
def api_key

lib/redmine_cli/worktime.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
module RedmineCLI
2+
class Worktime
3+
attr_reader :issue_id, :issue_subject
4+
5+
def initialize(attributes)
6+
if attributes['issue']
7+
@issue_id = attributes['issue']['id']
8+
@issue_subject = attributes['issue']['subject']
9+
end
10+
end
11+
12+
def issue?
13+
!issue_id.nil?
14+
end
15+
16+
def self.current
17+
url = URI.parse("#{Config.url}/worktimes/current?format=json&key=#{Config.api_key}")
18+
19+
http = Net::HTTP.new(url.host, url.port)
20+
http.use_ssl = true
21+
22+
request = Net::HTTP::Get.new("#{url.path}?#{url.query}")
23+
response = http.start { |http| http.request(request) }
24+
25+
if response.kind_of?(Net::HTTPSuccess)
26+
Worktime.new(JSON.parse(response.body)['worktime'])
27+
else
28+
nil
29+
end
30+
end
31+
end
32+
end

0 commit comments

Comments
 (0)