Author: jvanzyl
Date: Tue Dec 20 13:32:42 2005
New Revision: 358111
URL: http://svn.apache.org/viewcvs?rev=358111&view=rev
Log:
o changing the name of the library
Added:
maven/sandbox/issue/rissue/lib/jiraruby.rb (with props)
Added: maven/sandbox/issue/rissue/lib/jiraruby.rb
URL:
http://svn.apache.org/viewcvs/maven/sandbox/issue/rissue/lib/jiraruby.rb?rev=358111&view=auto
==============================================================================
--- maven/sandbox/issue/rissue/lib/jiraruby.rb (added)
+++ maven/sandbox/issue/rissue/lib/jiraruby.rb Tue Dec 20 13:32:42 2005
@@ -0,0 +1,178 @@
+#!/usr/bin/ruby
+
+require 'defaultDriver'
+require 'yaml'
+require 'yaml/store'
+require 'rexml/document'
+require 'net/http'
+require 'uri'
+require 'cgi'
+
+include REXML
+
+class IssueManager
+
+ def initialize
+ if ENV['JIRA_CONF_DIR'] != nil
+ @conf_dir = ENV['JIRA_CONF_DIR']
+ else
+ @conf_dir = `pwd`.chomp
+ end
+ @filters = YAML::load( File.open( File.join( @conf_dir, 'filters.yaml' ) )
)
+ [EMAIL PROTECTED] = YAML::load( File.open( File.join( @conf_dir,
'mappings.yaml' ) ) )
+ @jira = YAML::load( 'mappings.yaml' )
+ @server = getServer()
+ @issueLast = nil
+ end
+
+ def getServer
+ if @server == nil
+ @config = YAML::load( File.open( File.join( ENV['HOME'], 'jira.yaml' ) )
)
+ user = @config['user']
+ password = @config['password']
+ @url = @config['server-soap']
+ @server = JiraSoapService.new( @url )
+ @token = @server.login( user, password )
+ end
+ return @server
+ end
+
+ # The issue is a struct with all the issue information
+ def closeIssue( issue, assignee )
+ id = issue.id
+ query = "[EMAIL
PROTECTED]'server']}/secure/CommentAssignIssue.jspa?resolution=1&action=2&id=#{id}&assignee=#{assignee}&Close%20Issue=Close%20Issue&[EMAIL
PROTECTED]'user']}&[EMAIL PROTECTED]'password']}"
+ url = URI.parse(query)
+ res = Net::HTTP.get(url)
+ puts res
+ end
+
+ # The issue is a struct with all the issue information
+ def assignPermissionScheme( project, notificationSchemeId )
+ projectId = project['id']
+ query = "[EMAIL
PROTECTED]'server']}/secure/project/SelectProjectPermissionScheme.jspa?schemeIds=#{notificationSchemeId}&projectId=#{projectId}&Associate=Associate&[EMAIL
PROTECTED]'user']}&[EMAIL PROTECTED]'password']}"
+ url = URI.parse(query)
+ res = Net::HTTP.get(url)
+ puts res
+ end
+
+ # The issue is a struct with all the issue information
+ def assignNotificationScheme( project, notificationSchemeId )
+ projectId = project['id']
+ query = "[EMAIL
PROTECTED]'server']}/secure/project/SelectProjectScheme.jspa?schemeIds=#{notificationSchemeId}&projectId=#{projectId}&Associate=Associate&[EMAIL
PROTECTED]'user']}&[EMAIL PROTECTED]'password']}"
+ url = URI.parse(query)
+ res = Net::HTTP.get(url)
+ puts res
+ end
+
+ # Delegate calls to the underlying server where possible
+ def method_missing(method_name, *args)
+ return getServer().send( method_name, *([EMAIL PROTECTED] + args) )
+ end
+
+ def issueUrl( issue )
+ return @config['server'] + '/browse/' + issue.key
+ end
+
+ def issuesByFilter( filterName )
+ return getIssuesFromFilter( @filters[filterName]['id'] )
+ end
+
+ def generateXdoc( filterName )
+ document = REXML::Element.new( "document" )
+ properties = REXML::Element.new( "properties" )
+ properties.add_element( "title" ).add_text( "JIRA Issues" )
+ properties.add_element( "author", { "email" => "[EMAIL PROTECTED]" } )
+ document.add_element( properties )
+ body = REXML::Element.new( "body" )
+ document.add_element( body )
+ section = REXML::Element.new( "section" )
+ section.attributes['name'] = "JIRA Issues"
+ body.add_element( section )
+ table = REXML::Element.new( "table" )
+ section.add_element( table )
+ issues = issuesByFilter( 'patches' )
+
+ for issue in issues
+ tr = REXML::Element.new( "tr" )
+ tr.add_element( "td" ).add_text( issue.summary )
+ a = REXML::Element.new( "a" ).add_text( issue.key )
+ a.attributes['href'] = issueUrl( issue )
+ tr.add_element( "td" ).add_element( a )
+ table.add_element( tr )
+ end
+
+ return document
+
+ end
+
+ def updateIssue( issueId, fields )
+ return getServer().updateIssue( issueId, fields )
+ end
+
+ def createIssue2( project, summary, description, type, assignee, priorityKey
)
+ return createIssue( project, summary, description, type, assignee,
priorityKey, nil )
+ end
+
+ def createIssue( project, summary, description, type, assignee, priorityKey,
component )
+
+ issue = RemoteIssue.new()
+ issue.project = project
+ issue.summary = summary
+ issue.description = description
+ issue.type = type
+ issue.assignee = assignee
+
+ priority = @jira['priority'][priorityKey]
+ issue.priority = priority
+
+ if component != nil
+ issue.components = [ component ]
+ end
+
+ issue = getServer().createIssue( @token, issue )
+ puts issue.id
+ #eissue = EnhancedRemoteIssue.new( issue, assignee )
+ #puts eissue.id
+ return issue,assignee
+ end
+
+ #----------------------------------------------------------------
+ # Components
+ #----------------------------------------------------------------
+
+ def removeComponent( id )
+ url = CGI.escape( url )
+ description = CGI.escape( description )
+ name = CGI.escape( name )
+ query = "[EMAIL
PROTECTED]'server']}/secure/project/DeleteComponent.jspa?action=remove&cid=#{cid}&confirm=true&Delete=Delete&[EMAIL
PROTECTED]'user']}&[EMAIL PROTECTED]'password']}"
+ request = URI.parse(query)
+ res = Net::HTTP.get(request)
+ puts res
+ end
+
+ # Create component mappings
+ # Create filter mappings
+ def setup( projectKey )
+ components = getServer().getComponents( projectKey )
+ puts components
+ y = YAML::Store.new( "components2.yaml", :Indent => 2 )
+ y.transaction do
+ y['components'] = components
+ end
+ end
+
+ #----------------------------------------------------------------
+ # Projects
+ #----------------------------------------------------------------
+
+ # The issue is a struct with all the issue information
+ def createProject( key, name, description, url, lead, permissionSchemeId,
notificationSchemeId )
+ url = CGI.escape( url )
+ description = CGI.escape( description )
+ name = CGI.escape( name )
+ query = "[EMAIL
PROTECTED]'server']}/secure/admin/AddProject.jspa?name=#{name}&key=#{key}&url=#{url}&lead=#{lead}&assigneeType=2&description=#{description}¬ificationScheme=#{notificationSchemeId}&permissionScheme=#{permissionSchemeId}&issueSecurityScheme=-1&Create=Create&[EMAIL
PROTECTED]'user']}&[EMAIL PROTECTED]'password']}"
+ request = URI.parse(query)
+ res = Net::HTTP.get(request)
+ end
+
+end
Propchange: maven/sandbox/issue/rissue/lib/jiraruby.rb
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/issue/rissue/lib/jiraruby.rb
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"