jira-wsdl 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.md +6 -1
  2. data/Rakefile +11 -1
  3. data/lib/jira-wsdl.rb +65 -33
  4. metadata +3 -4
data/README.md CHANGED
@@ -42,6 +42,11 @@ Or install it yourself as:
42
42
 
43
43
  jira.all_versions
44
44
 
45
- Get tickects:
45
+ Get tickets:
46
46
 
47
47
  tickets = jira.get_jira_tickets(status, project, version)
48
+
49
+ Close session:
50
+
51
+ jira.logout token
52
+
data/Rakefile CHANGED
@@ -1 +1,11 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rubygems'
3
+ require 'cucumber'
4
+ require 'cucumber/rake/task'
5
+
6
+ Cucumber::Rake::Task.new(:features) do |t|
7
+ t.cucumber_opts = "--format pretty"
8
+ end
9
+
10
+ task :default => :features
11
+
data/lib/jira-wsdl.rb CHANGED
@@ -15,13 +15,15 @@ class JiraWsdl
15
15
  #create Savon.client
16
16
  @client = Savon.client(wsdl: @wsdl_url, log: false)
17
17
 
18
- #operation list permited by JIRA soap
19
- #@operations_available = @client.operations.sort
20
-
21
18
  #create login token
22
19
  @token ||= self.get_token
23
20
  end
24
21
 
22
+ def list_operations
23
+ #operation list permited by JIRA soap
24
+ @operations_available = @client.operations.sort
25
+ end
26
+
25
27
  #get token login
26
28
  #
27
29
  # @return [String] token
@@ -48,49 +50,76 @@ class JiraWsdl
48
50
  puts error.to_hash[:fault][:faultstring]
49
51
  end
50
52
 
51
- #get teh actual version and the next version of a project
53
+ #logout of jira
54
+ #
55
+ # @param [String] token
56
+ # @return [Boolean]
57
+ def logout(token = @token)
58
+ response=nil
59
+ Timeout::timeout(60) {
60
+ response = @client.call(:logout, message: {:token => token})
61
+ }
62
+ response.to_hash[:logout_response][:logout_return]
63
+ end
64
+
65
+ #checks if a project exist
66
+ #
67
+ # @param [String] project
68
+ # @return [Boolean]
69
+ def check_project project
70
+ @client.call(:get_project_by_key, message: {:token => @token, :key => project.upcase})
71
+ true
72
+ rescue Savon::SOAPFault => error
73
+ error = error.to_hash[:fault][:faultstring]
74
+ return false, error
75
+ end
76
+
77
+ #get the actual version and the next version of a project
52
78
  # @param [String] project_name
53
79
  def get_version(project_name)
54
80
  tries ||= 5
55
81
  all_versions = []
82
+ result, error = (self.check_project project_name)
56
83
 
57
- #get all versions xml
58
- response = @client.call(:get_versions, message: {:token => @token, :key => project_name.upcase})
84
+ unless result == false
85
+ #get all versions xml
86
+ response = @client.call(:get_versions, message: {:token => @token, :key => project_name.upcase})
59
87
 
60
- #get next version from hash
61
- next_version_id = response.to_hash[:get_versions_response][:get_versions_return][:'@soapenc:array_type']
62
- next_version_id = next_version_id.match(/RemoteVersion\[(\d+)\]/)[1]
88
+ #get next version from hash
89
+ next_version_id = response.to_hash[:get_versions_response][:get_versions_return][:'@soapenc:array_type']
90
+ next_version_id = next_version_id.match(/RemoteVersion\[(\d+)\]/)[1]
63
91
 
64
- #get actual version from the array of version id's
65
- actual_version_id = (self.get_all_version_ids response.to_hash).sort.last - 1
92
+ #get actual version from the array of version id's
93
+ actual_version_id = (self.get_all_version_ids response.to_hash).sort.last - 1
66
94
 
67
- response.to_hash[:multi_ref].each do |version|
68
- all_versions << version[:name]
69
- @next_version = version[:name] if next_version_id.to_i == version[:sequence].to_i
70
- @actual_version = version[:name] if actual_version_id.to_i == version[:sequence].to_i
71
- end
95
+ response.to_hash[:multi_ref].each do |version|
96
+ all_versions << version[:name]
97
+ @next_version = version[:name] if next_version_id.to_i == version[:sequence].to_i
98
+ @actual_version = version[:name] if actual_version_id.to_i == version[:sequence].to_i
99
+ end
72
100
 
73
- @all_versions = all_versions.sort_by{|x| x.split('.').map &:to_i }
74
- all_versions = []
75
- raise Exceptions::CouldNotGetNextVersion, 'Problem getting Next Version number' if @next_version.nil?
76
- raise Exceptions::CouldNotGetActualVersion, 'Problem getting Actual Version number' if @actual_version.nil?
77
- return true
101
+ @all_versions = all_versions.sort_by { |x| x.split('.').map &:to_i }
102
+ raise Exceptions::CouldNotGetNextVersion, 'Problem getting Next Version number' if @next_version.nil?
103
+ raise Exceptions::CouldNotGetActualVersion, 'Problem getting Actual Version number' if @actual_version.nil?
104
+ return true
105
+ end
106
+ return false, error.to_s
78
107
  rescue Savon::SOAPFault => e
79
108
  tries = tries -= 1
80
- unless (tries).zero?
109
+ if (tries).zero?
110
+ return false
111
+ else
81
112
  sleep 5
82
113
  self.token
83
114
  puts "Jira connection failed. Trying to connect again. (Num tries: #{tries})"
84
115
  retry
85
- else
86
- return false
87
116
  end
88
117
  end
89
118
 
90
- #get all version id's of the project
91
- #
92
- # @param [Has] response
93
- # @return [Array] @version_id_array
119
+ #get all version id's of the project
120
+ #
121
+ # @param [Hash] response
122
+ # @return [Array] @version_id_array
94
123
  def get_all_version_ids(response)
95
124
  version_id_array = []
96
125
  response.to_hash[:multi_ref].each do |version|
@@ -106,13 +135,14 @@ class JiraWsdl
106
135
  # @param status - verify,in progress, open, reopened, closed
107
136
  # @param project key or name
108
137
  # @param version project version
109
- # @param maxnumresults max number of results
138
+ # @param max_num_results max number of results
110
139
  # @return nil, jira_tickets, (false, error_msg)
111
- def get_jira_tickets(status, project, version, maxnumresults=300)
140
+ def get_jira_tickets(status, project, version, max_num_results=300)
112
141
 
113
- response = @client.call(:get_issues_from_jql_search, message: {:token => @token,
114
- :jqlSearch => 'status in (' + status + ') and project=' + project + ' and fixVersion in (' + version + ')',
115
- :maxNumResults => maxnumresults})
142
+ response = @client.call(:get_issues_from_jql_search,
143
+ message: {:token => @token,
144
+ :jqlSearch => 'status in (' + status + ') and project=' + project + ' and fixVersion in (' + version + ')',
145
+ :maxNumResults => max_num_results})
116
146
  #if response is empty
117
147
  if response.to_hash[:multi_ref].nil?
118
148
  nil
@@ -137,4 +167,6 @@ module Exceptions
137
167
  end
138
168
  class CouldNotGetActualVersion < StandardError;
139
169
  end
170
+ class TokenNotCreated < StandardError;
171
+ end
140
172
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jira-wsdl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: savon
@@ -56,9 +56,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
56
  version: '0'
57
57
  requirements: []
58
58
  rubyforge_project:
59
- rubygems_version: 1.8.25
59
+ rubygems_version: 1.8.23
60
60
  signing_key:
61
61
  specification_version: 3
62
62
  summary: jira-wsdl
63
63
  test_files: []
64
- has_rdoc: false