howlingmine-client 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +7 -0
- data/Manifest.txt +1 -0
- data/howlingmine_client.tmproj +8 -24
- data/lib/howlingmine/client.rb +4 -0
- data/lib/howlingmine/issue.rb +49 -31
- data/lib/howlingmine.rb +1 -1
- data/script/console +33 -0
- data/test/issue_test.rb +24 -0
- metadata +3 -2
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/howlingmine_client.tmproj
CHANGED
@@ -54,30 +54,14 @@
|
|
54
54
|
<key>caret</key>
|
55
55
|
<dict>
|
56
56
|
<key>column</key>
|
57
|
-
<integer>
|
57
|
+
<integer>209</integer>
|
58
58
|
<key>line</key>
|
59
|
-
<integer>
|
59
|
+
<integer>26</integer>
|
60
60
|
</dict>
|
61
|
-
<key>columnSelection</key>
|
62
|
-
<false/>
|
63
61
|
<key>firstVisibleColumn</key>
|
64
62
|
<integer>0</integer>
|
65
63
|
<key>firstVisibleLine</key>
|
66
64
|
<integer>0</integer>
|
67
|
-
<key>selectFrom</key>
|
68
|
-
<dict>
|
69
|
-
<key>column</key>
|
70
|
-
<integer>115</integer>
|
71
|
-
<key>line</key>
|
72
|
-
<integer>22</integer>
|
73
|
-
</dict>
|
74
|
-
<key>selectTo</key>
|
75
|
-
<dict>
|
76
|
-
<key>column</key>
|
77
|
-
<integer>127</integer>
|
78
|
-
<key>line</key>
|
79
|
-
<integer>22</integer>
|
80
|
-
</dict>
|
81
65
|
</dict>
|
82
66
|
<key>lib/howlingmine/config.rb</key>
|
83
67
|
<dict>
|
@@ -98,28 +82,28 @@
|
|
98
82
|
<key>caret</key>
|
99
83
|
<dict>
|
100
84
|
<key>column</key>
|
101
|
-
<integer>
|
85
|
+
<integer>0</integer>
|
102
86
|
<key>line</key>
|
103
|
-
<integer>
|
87
|
+
<integer>72</integer>
|
104
88
|
</dict>
|
105
89
|
<key>firstVisibleColumn</key>
|
106
90
|
<integer>0</integer>
|
107
91
|
<key>firstVisibleLine</key>
|
108
|
-
<integer>
|
92
|
+
<integer>91</integer>
|
109
93
|
</dict>
|
110
94
|
<key>test/issue_test.rb</key>
|
111
95
|
<dict>
|
112
96
|
<key>caret</key>
|
113
97
|
<dict>
|
114
98
|
<key>column</key>
|
115
|
-
<integer>
|
99
|
+
<integer>31</integer>
|
116
100
|
<key>line</key>
|
117
|
-
<integer>
|
101
|
+
<integer>145</integer>
|
118
102
|
</dict>
|
119
103
|
<key>firstVisibleColumn</key>
|
120
104
|
<integer>0</integer>
|
121
105
|
<key>firstVisibleLine</key>
|
122
|
-
<integer>
|
106
|
+
<integer>114</integer>
|
123
107
|
</dict>
|
124
108
|
</dict>
|
125
109
|
<key>openDocuments</key>
|
data/lib/howlingmine/client.rb
CHANGED
@@ -22,6 +22,10 @@ module HowlingMine
|
|
22
22
|
def journals
|
23
23
|
RestClient.post("#{HowlingMine::Config.protocol}://#{HowlingMine::Config.host}:#{HowlingMine::Config.port}/howling_mine/journals", :api_key => HowlingMine::Config.api_key, :issue_id => HowlingMine::Config.params[:issue_id])
|
24
24
|
end
|
25
|
+
|
26
|
+
def find
|
27
|
+
RestClient.post("#{HowlingMine::Config.protocol}://#{HowlingMine::Config.host}:#{HowlingMine::Config.port}/howling_mine/find", HowlingMine::Config.params.merge(:api_key => HowlingMine::Config.api_key))
|
28
|
+
end
|
25
29
|
end
|
26
30
|
end
|
27
31
|
|
data/lib/howlingmine/issue.rb
CHANGED
@@ -37,35 +37,14 @@ module HowlingMine
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
def self.find(method = :all, params = {})
|
41
|
+
params[:method] = method
|
42
|
+
HowlingMine::Config.params.merge!(params)
|
43
|
+
build_issues(HowlingMine::Client.find)
|
44
|
+
end
|
45
|
+
|
40
46
|
def self.all
|
41
|
-
|
42
|
-
p['identifier'] == HowlingMine::Config.project
|
43
|
-
end
|
44
|
-
project_id = ''
|
45
|
-
if ! project.nil?
|
46
|
-
project_id = project['id']
|
47
|
-
else
|
48
|
-
raise Exception.new("#{HowlingMine::Config.project} project not found in target Redmine")
|
49
|
-
end
|
50
|
-
issues = []
|
51
|
-
client = HowlingMine::Client
|
52
|
-
JSON.parse(client.issues).each do |i|
|
53
|
-
next if i['project_id'] != project_id
|
54
|
-
issue = Issue.new
|
55
|
-
issue.subject = i['subject']
|
56
|
-
issue.description = i['description']
|
57
|
-
issue.id = i['id'].to_i
|
58
|
-
issue.raw = i
|
59
|
-
issue.created_on = i['created_on']
|
60
|
-
issue.updated_on = i['updated_on']
|
61
|
-
if i['custom_fields']
|
62
|
-
i['custom_fields'].each do |k,v|
|
63
|
-
issue.custom_fields[k.to_sym] = v
|
64
|
-
end
|
65
|
-
end
|
66
|
-
issues << issue
|
67
|
-
end
|
68
|
-
issues
|
47
|
+
build_issues(HowlingMine::Client.issues)
|
69
48
|
end
|
70
49
|
|
71
50
|
def updated_on
|
@@ -77,11 +56,11 @@ module HowlingMine
|
|
77
56
|
end
|
78
57
|
|
79
58
|
def self.first
|
80
|
-
|
59
|
+
find :first
|
81
60
|
end
|
82
61
|
|
83
62
|
def self.last
|
84
|
-
|
63
|
+
find :last
|
85
64
|
end
|
86
65
|
|
87
66
|
def status
|
@@ -91,7 +70,7 @@ module HowlingMine
|
|
91
70
|
end
|
92
71
|
|
93
72
|
def self.get(ticket_no)
|
94
|
-
|
73
|
+
find ticket_no.to_i
|
95
74
|
end
|
96
75
|
|
97
76
|
def journal
|
@@ -102,5 +81,44 @@ module HowlingMine
|
|
102
81
|
HowlingMine::Config.params.merge! params
|
103
82
|
JSON.parse(client.journals)
|
104
83
|
end
|
84
|
+
|
85
|
+
private
|
86
|
+
def self.build_issues(json)
|
87
|
+
issues = []
|
88
|
+
elems = JSON.parse json
|
89
|
+
if elems.is_a? Array
|
90
|
+
elems.each do |i|
|
91
|
+
issue = Issue.new
|
92
|
+
issue.subject = i['subject']
|
93
|
+
issue.description = i['description']
|
94
|
+
issue.id = i['id'].to_i
|
95
|
+
issue.raw = i
|
96
|
+
issue.created_on = i['created_on']
|
97
|
+
issue.updated_on = i['updated_on']
|
98
|
+
if i['custom_fields']
|
99
|
+
i['custom_fields'].each do |k,v|
|
100
|
+
issue.custom_fields[k.to_sym] = v
|
101
|
+
end
|
102
|
+
end
|
103
|
+
issues << issue
|
104
|
+
end
|
105
|
+
return issues
|
106
|
+
else
|
107
|
+
i = elems
|
108
|
+
issue = Issue.new
|
109
|
+
issue.subject = i['subject']
|
110
|
+
issue.description = i['description']
|
111
|
+
issue.id = i['id'].to_i
|
112
|
+
issue.raw = i
|
113
|
+
issue.created_on = i['created_on']
|
114
|
+
issue.updated_on = i['updated_on']
|
115
|
+
if i['custom_fields']
|
116
|
+
i['custom_fields'].each do |k,v|
|
117
|
+
issue.custom_fields[k.to_sym] = v
|
118
|
+
end
|
119
|
+
end
|
120
|
+
return issue
|
121
|
+
end
|
122
|
+
end
|
105
123
|
end
|
106
124
|
end
|
data/lib/howlingmine.rb
CHANGED
data/script/console
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# irb.rb - intaractive ruby
|
4
|
+
# $Release Version: 0.9.5 $
|
5
|
+
# $Revision: 11708 $
|
6
|
+
# $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
|
7
|
+
# by Keiju ISHITSUKA(keiju@ruby-lang.org)
|
8
|
+
#
|
9
|
+
|
10
|
+
require "irb"
|
11
|
+
require File.join(File.dirname(__FILE__), "../lib/howlingmine.rb")
|
12
|
+
|
13
|
+
include HowlingMine
|
14
|
+
|
15
|
+
HowlingMine::Config.host = 'redmine.local'
|
16
|
+
HowlingMine::Config.port = 80 # default
|
17
|
+
HowlingMine::Config.use_ssl = false # default
|
18
|
+
HowlingMine::Config.project = 'howlingmine'
|
19
|
+
HowlingMine::Config.tracker = 'Bug' # default
|
20
|
+
HowlingMine::Config.api_key = 'woiun@34lkju8ou'
|
21
|
+
|
22
|
+
if __FILE__ == $0
|
23
|
+
IRB.start(__FILE__)
|
24
|
+
else
|
25
|
+
# check -e option
|
26
|
+
if /^-e$/ =~ $0
|
27
|
+
IRB.start(__FILE__)
|
28
|
+
else
|
29
|
+
IRB.setup(__FILE__)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
data/test/issue_test.rb
CHANGED
@@ -122,5 +122,29 @@ class TestIssue < Test::Unit::TestCase
|
|
122
122
|
assert issue.unexistant_method98847
|
123
123
|
end
|
124
124
|
end
|
125
|
+
|
126
|
+
def test_find
|
127
|
+
assert HowlingMine::Issue.find(:all).size == 0
|
128
|
+
issue = HowlingMine::Issue.new
|
129
|
+
issue.subject = 'issue number 1'
|
130
|
+
issue.description = 'description'
|
131
|
+
issue.custom_fields[:foofield1] = 'value1'
|
132
|
+
assert issue.save
|
133
|
+
issue = HowlingMine::Issue.find :first
|
134
|
+
assert issue != nil
|
135
|
+
assert issue.subject == 'issue number 1'
|
136
|
+
issue = HowlingMine::Issue.find :last
|
137
|
+
assert issue != nil
|
138
|
+
assert issue.subject == 'issue number 1'
|
139
|
+
issue = HowlingMine::Issue.find 1
|
140
|
+
assert issue != nil
|
141
|
+
assert issue.subject == 'issue number 1'
|
142
|
+
assert_raises RestClient::ResourceNotFound do
|
143
|
+
HowlingMine::Issue.find 0
|
144
|
+
end
|
145
|
+
assert_raises RestClient::ResourceNotFound do
|
146
|
+
HowlingMine::Issue.find 2
|
147
|
+
end
|
148
|
+
end
|
125
149
|
|
126
150
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: howlingmine-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergio Rubio
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-23 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -66,6 +66,7 @@ files:
|
|
66
66
|
- lib/howlingmine/issue.rb
|
67
67
|
- redmine_test_files/database.yml
|
68
68
|
- redmine_test_files/redmine.db
|
69
|
+
- script/console
|
69
70
|
- test/issue_test.rb
|
70
71
|
has_rdoc: true
|
71
72
|
homepage: http://github.com/rubiojr/howlingmine-client
|