jiraSOAP 0.3.0 → 0.4.0
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/README.markdown +1 -1
- data/lib/jiraSOAP/JIRAservice.rb +9 -4
- data/lib/jiraSOAP/remoteAPI.rb +28 -32
- data/lib/jiraSOAP/remoteEntities.rb +237 -33
- data/lib/jiraSOAP/url.rb +1 -0
- data/lib/{jiraSOAP/macruby_stuff.rb → macruby_stuff.rb} +3 -1
- metadata +4 -4
    
        data/README.markdown
    CHANGED
    
    | @@ -23,7 +23,7 @@ Pick up where `jira4r` left off: | |
| 23 23 | 
             
            Getting Started
         | 
| 24 24 | 
             
            ---------------
         | 
| 25 25 |  | 
| 26 | 
            -
            `jiraSOAP` should run on Ruby 1.9.2 and MacRuby 0. | 
| 26 | 
            +
            `jiraSOAP` should run on Ruby 1.9.2 and MacRuby 0.8. You can install it using `gem`, or build from source:
         | 
| 27 27 |  | 
| 28 28 | 
             
                    git clone git://github.com/Marketcircle/jiraSOAP.git
         | 
| 29 29 | 
             
                    rake build
         | 
    
        data/lib/jiraSOAP/JIRAservice.rb
    CHANGED
    
    | @@ -18,12 +18,16 @@ module JIRA | |
| 18 18 | 
             
            class JIRAService < Handsoap::Service
         | 
| 19 19 | 
             
              include RemoteAPI
         | 
| 20 20 |  | 
| 21 | 
            -
               | 
| 21 | 
            +
              # @return [String]
         | 
| 22 | 
            +
              attr_reader :auth_token
         | 
| 23 | 
            +
              # @return [String]
         | 
| 24 | 
            +
              attr_reader :user
         | 
| 22 25 |  | 
| 23 26 | 
             
              # Factory method to initialize and login.
         | 
| 24 27 | 
             
              # @param [String] url URL for the JIRA server
         | 
| 25 28 | 
             
              # @param [String] user JIRA user name to login with
         | 
| 26 29 | 
             
              # @param [String] password
         | 
| 30 | 
            +
              # @return [JIRA::JIRAService]
         | 
| 27 31 | 
             
              def self.instance_with_endpoint(url, user, password)
         | 
| 28 32 | 
             
                jira = JIRAService.new url
         | 
| 29 33 | 
             
                jira.login user, password
         | 
| @@ -44,10 +48,11 @@ class JIRAService < Handsoap::Service | |
| 44 48 | 
             
              end
         | 
| 45 49 |  | 
| 46 50 | 
             
              # Something to help users out until the rest of the API is implemented.
         | 
| 51 | 
            +
              # @return [nil]
         | 
| 47 52 | 
             
              def method_missing(method, *args)
         | 
| 48 | 
            -
                message  =  | 
| 49 | 
            -
                message << ' | 
| 50 | 
            -
                message << 'been stabilized yet.'
         | 
| 53 | 
            +
                message  = "#{method} is not a valid method. Check the documentation; the "
         | 
| 54 | 
            +
                message << 'method may not be implemented or has changed in recent '
         | 
| 55 | 
            +
                message << 'revisions. The client side API has not been stabilized yet.'
         | 
| 51 56 | 
             
                raise NoMethodError, message, caller
         | 
| 52 57 | 
             
              end
         | 
| 53 58 |  | 
    
        data/lib/jiraSOAP/remoteAPI.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            # Contains the API defined by Atlassian for the JIRA SOAP service. The JavaDoc
         | 
| 2 2 | 
             
            # for the SOAP API is located at http://docs.atlassian.com/software/jira/docs/api/rpc-jira-plugin/latest/com/atlassian/jira/rpc/soap/JiraSoapService.html.
         | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 3 | 
            +
            # @todo exception handling
         | 
| 4 | 
            +
            # @todo code refactoring and de-duplication
         | 
| 5 5 | 
             
            module RemoteAPI
         | 
| 6 6 | 
             
              # XPath constant to get a node containing a response array.
         | 
| 7 7 | 
             
              # This could be used for all responses, but is only used in cases where we
         | 
| @@ -168,6 +168,8 @@ module RemoteAPI | |
| 168 168 | 
             
              # During my own testing, I found that HTTP requests could timeout for really
         | 
| 169 169 | 
             
              # large requests (~2500 results). So I set a more reasonable upper limit;
         | 
| 170 170 | 
             
              # feel free to override it, but be aware of the potential issues.
         | 
| 171 | 
            +
              #
         | 
| 172 | 
            +
              # The JIRA::Issue structure does not include any comments or attachments.
         | 
| 171 173 | 
             
              # @param [String] jql_query JQL query as a string
         | 
| 172 174 | 
             
              # @param [Fixnum] max_results limit on number of returned results;
         | 
| 173 175 | 
             
              #  the value may be overridden by the server if max_results is too large
         | 
| @@ -328,20 +330,21 @@ module RemoteAPI | |
| 328 330 | 
             
                JIRA::Project.project_with_xml_fragment frag
         | 
| 329 331 | 
             
              end
         | 
| 330 332 |  | 
| 331 | 
            -
              #  | 
| 333 | 
            +
              # You can set the release state for a project with this method.
         | 
| 332 334 | 
             
              # @param [String] project_name
         | 
| 333 335 | 
             
              # @param [JIRA::Version] version
         | 
| 334 336 | 
             
              # @return [boolean] true, throws an exception otherwise
         | 
| 335 | 
            -
              def  | 
| 337 | 
            +
              def release_state_for_version_for_project(project_name, version)
         | 
| 336 338 | 
             
                response = invoke('soap:releaseVersion') { |msg|
         | 
| 337 339 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| 338 340 | 
             
                  msg.add 'soap:in1', project_name
         | 
| 339 | 
            -
                  msg.add 'soap:in2' | 
| 341 | 
            +
                  msg.add 'soap:in2' do |submsg| version.soapify_for submsg end
         | 
| 340 342 | 
             
                }
         | 
| 341 343 | 
             
                true
         | 
| 342 344 | 
             
              end
         | 
| 343 345 |  | 
| 344 | 
            -
              #  | 
| 346 | 
            +
              # The id of the project is the only field that you cannot update. Or, at
         | 
| 347 | 
            +
              # least the only field I know that you cannot update.
         | 
| 345 348 | 
             
              # @param [JIRA::Project] project
         | 
| 346 349 | 
             
              # @return [JIRA::Project]
         | 
| 347 350 | 
             
              def update_project_with_project(project)
         | 
| @@ -353,12 +356,16 @@ module RemoteAPI | |
| 353 356 | 
             
                JIRA::Project.project_with_xml_fragment frag
         | 
| 354 357 | 
             
              end
         | 
| 355 358 |  | 
| 356 | 
            -
              #  | 
| 359 | 
            +
              # It seems that creating a user without any permission groups will trigger
         | 
| 360 | 
            +
              # an exception on some versions of JIRA. The irony is that this method provides
         | 
| 361 | 
            +
              # no way to add groups. The good news though, is that the creation will still
         | 
| 362 | 
            +
              # happen; but the user will have no permissions.
         | 
| 357 363 | 
             
              # @param [String] username
         | 
| 358 364 | 
             
              # @param [String] password
         | 
| 359 365 | 
             
              # @param [String] full_name
         | 
| 360 366 | 
             
              # @param [String] email
         | 
| 361 | 
            -
              # @return [JIRA::User]
         | 
| 367 | 
            +
              # @return [JIRA::User,nil] depending on your JIRA version, this method may
         | 
| 368 | 
            +
              #   always raise an exception instead of actually returning anythin
         | 
| 362 369 | 
             
              def create_user(username, password, full_name, email)
         | 
| 363 370 | 
             
                response = invoke('soap:createUser') { |msg|
         | 
| 364 371 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| @@ -371,7 +378,6 @@ module RemoteAPI | |
| 371 378 | 
             
                JIRA::User.user_with_xml_fragment frag
         | 
| 372 379 | 
             
              end
         | 
| 373 380 |  | 
| 374 | 
            -
              # @todo test this method
         | 
| 375 381 | 
             
              # @param [String] username
         | 
| 376 382 | 
             
              # @return [boolean] true if successful, throws an exception otherwise
         | 
| 377 383 | 
             
              def delete_user_with_name(username)
         | 
| @@ -382,7 +388,6 @@ module RemoteAPI | |
| 382 388 | 
             
                true
         | 
| 383 389 | 
             
              end
         | 
| 384 390 |  | 
| 385 | 
            -
              # @todo test this method
         | 
| 386 391 | 
             
              # @param [String] project_id
         | 
| 387 392 | 
             
              # @return [JIRA::Project]
         | 
| 388 393 | 
             
              def get_project_with_id(project_id)
         | 
| @@ -394,10 +399,11 @@ module RemoteAPI | |
| 394 399 | 
             
                JIRA::Project.project_with_xml_fragment frag
         | 
| 395 400 | 
             
              end
         | 
| 396 401 |  | 
| 397 | 
            -
              # @todo  | 
| 402 | 
            +
              # @todo parse the permission scheme
         | 
| 403 | 
            +
              # Note: this method does not yet include the permission scheme.
         | 
| 398 404 | 
             
              # @param [String] project_id
         | 
| 399 405 | 
             
              # @return [JIRA::Project]
         | 
| 400 | 
            -
              def  | 
| 406 | 
            +
              def get_project_including_schemes_with_id(project_id)
         | 
| 401 407 | 
             
                response = invoke('soap:getProjectWithSchemesById') { |msg|
         | 
| 402 408 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| 403 409 | 
             
                  msg.add 'soap:in1', project_id
         | 
| @@ -406,11 +412,10 @@ module RemoteAPI | |
| 406 412 | 
             
                JIRA::Project.project_with_xml_fragment frag
         | 
| 407 413 | 
             
              end
         | 
| 408 414 |  | 
| 409 | 
            -
              # @todo test this method
         | 
| 410 415 | 
             
              # @param [String] issue_key
         | 
| 411 416 | 
             
              # @param [JIRA::Comment] comment
         | 
| 412 417 | 
             
              # @return [boolean] true if successful, throws an exception otherwise
         | 
| 413 | 
            -
              def  | 
| 418 | 
            +
              def add_comment_to_issue_with_key(issue_key, comment)
         | 
| 414 419 | 
             
                response = invoke('soap:addComment') { |msg|
         | 
| 415 420 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| 416 421 | 
             
                  msg.add 'soap:in1', issue_key
         | 
| @@ -419,7 +424,6 @@ module RemoteAPI | |
| 419 424 | 
             
                true
         | 
| 420 425 | 
             
              end
         | 
| 421 426 |  | 
| 422 | 
            -
              # @todo test this method
         | 
| 423 427 | 
             
              # @param [String] id
         | 
| 424 428 | 
             
              # @return [JIRA::Comment]
         | 
| 425 429 | 
             
              def get_comment_with_id(id)
         | 
| @@ -431,10 +435,9 @@ module RemoteAPI | |
| 431 435 | 
             
                JIRA::Comment.comment_with_xml_fragment frag
         | 
| 432 436 | 
             
              end
         | 
| 433 437 |  | 
| 434 | 
            -
              # @todo test this method
         | 
| 435 438 | 
             
              # @param [String] issue_key
         | 
| 436 439 | 
             
              # @return [[JIRA::Comment]]
         | 
| 437 | 
            -
              def  | 
| 440 | 
            +
              def get_comments_for_issue_with_key(issue_key)
         | 
| 438 441 | 
             
                response = invoke('soap:getComments') { |msg|
         | 
| 439 442 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| 440 443 | 
             
                  msg.add 'soap:in1', issue_key
         | 
| @@ -445,7 +448,6 @@ module RemoteAPI | |
| 445 448 | 
             
                }
         | 
| 446 449 | 
             
              end
         | 
| 447 450 |  | 
| 448 | 
            -
              # @todo test this method
         | 
| 449 451 | 
             
              # @param [String] project_name
         | 
| 450 452 | 
             
              # @return [[JIRA::IssueType]]
         | 
| 451 453 | 
             
              def get_issue_types_for_project_with_id(project_id)
         | 
| @@ -459,7 +461,8 @@ module RemoteAPI | |
| 459 461 | 
             
                }
         | 
| 460 462 | 
             
              end
         | 
| 461 463 |  | 
| 462 | 
            -
              #  | 
| 464 | 
            +
              # This method does not work right now for reasons that I do not understand.
         | 
| 465 | 
            +
              # @todo fix this method
         | 
| 463 466 | 
             
              # @param [String] query
         | 
| 464 467 | 
             
              # @param [Fixnum] max_results
         | 
| 465 468 | 
             
              # @param [Fixnum] offset
         | 
| @@ -477,7 +480,6 @@ module RemoteAPI | |
| 477 480 | 
             
                }
         | 
| 478 481 | 
             
              end
         | 
| 479 482 |  | 
| 480 | 
            -
              # @todo test this method
         | 
| 481 483 | 
             
              # @param [JIRA::Comment] comment
         | 
| 482 484 | 
             
              # @return [JIRA::Comment]
         | 
| 483 485 | 
             
              def update_comment(comment)
         | 
| @@ -489,19 +491,17 @@ module RemoteAPI | |
| 489 491 | 
             
                JIRA::Comment.comment_with_xml_fragment frag
         | 
| 490 492 | 
             
              end
         | 
| 491 493 |  | 
| 492 | 
            -
              # @todo test this method
         | 
| 493 494 | 
             
              # @return [[JIRA::IssueType]]
         | 
| 494 495 | 
             
              def get_subtask_issue_types
         | 
| 495 496 | 
             
                response = invoke('soap:getSubTaskIssueTypes') { |msg|
         | 
| 496 497 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| 497 498 | 
             
                }
         | 
| 498 | 
            -
                response.document.xpath("#{RESPONSE_XPATH}/ | 
| 499 | 
            +
                response.document.xpath("#{RESPONSE_XPATH}/getSubTaskIssueTypesReturn").map {
         | 
| 499 500 | 
             
                  |frag|
         | 
| 500 501 | 
             
                  JIRA::IssueType.issue_type_with_xml_fragment frag
         | 
| 501 502 | 
             
                }
         | 
| 502 503 | 
             
              end
         | 
| 503 504 |  | 
| 504 | 
            -
              # @todo test this method
         | 
| 505 505 | 
             
              # @param [String] project_id
         | 
| 506 506 | 
             
              # @return [[JIRA::IssueType]]
         | 
| 507 507 | 
             
              def get_subtask_issue_types_for_project_with_id(project_id)
         | 
| @@ -515,7 +515,7 @@ module RemoteAPI | |
| 515 515 | 
             
                }
         | 
| 516 516 | 
             
              end
         | 
| 517 517 |  | 
| 518 | 
            -
              #  | 
| 518 | 
            +
              # I have no idea what this method does.
         | 
| 519 519 | 
             
              # @todo find out what this method does
         | 
| 520 520 | 
             
              # @return [boolean] true if successful, throws an exception otherwise
         | 
| 521 521 | 
             
              def refresh_custom_fields
         | 
| @@ -525,9 +525,8 @@ module RemoteAPI | |
| 525 525 | 
             
                true
         | 
| 526 526 | 
             
              end
         | 
| 527 527 |  | 
| 528 | 
            -
              # @todo test this method
         | 
| 529 528 | 
             
              # Retrieves favourite filters for the currently logged in user.
         | 
| 530 | 
            -
              # @return [JIRA::Filter]
         | 
| 529 | 
            +
              # @return [[JIRA::Filter]]
         | 
| 531 530 | 
             
              def get_favourite_filters
         | 
| 532 531 | 
             
                response = invoke('soap:getFavouriteFilters') { |msg|
         | 
| 533 532 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| @@ -538,7 +537,6 @@ module RemoteAPI | |
| 538 537 | 
             
                }
         | 
| 539 538 | 
             
              end
         | 
| 540 539 |  | 
| 541 | 
            -
              # @todo test this method
         | 
| 542 540 | 
             
              # @param [String] id
         | 
| 543 541 | 
             
              # @param [Fixnum] max_results
         | 
| 544 542 | 
             
              # @param [Fixnum] offset
         | 
| @@ -556,7 +554,6 @@ module RemoteAPI | |
| 556 554 | 
             
                }
         | 
| 557 555 | 
             
              end
         | 
| 558 556 |  | 
| 559 | 
            -
              # @todo test this method
         | 
| 560 557 | 
             
              # @param [String] id
         | 
| 561 558 | 
             
              # @return [Fixnum]
         | 
| 562 559 | 
             
              def get_issue_count_for_filter_with_id(id)
         | 
| @@ -567,14 +564,13 @@ module RemoteAPI | |
| 567 564 | 
             
                response.document.xpath('//getIssueCountForFilterReturn').to_s.to_i
         | 
| 568 565 | 
             
              end
         | 
| 569 566 |  | 
| 570 | 
            -
              # @todo test this method
         | 
| 571 567 | 
             
              # @todo optimize building the message, try a single pass
         | 
| 572 568 | 
             
              # Expect this method to be slow.
         | 
| 573 569 | 
             
              # @param [String] issue_key
         | 
| 574 570 | 
             
              # @param [[String]] filenames names to put on the files
         | 
| 575 571 | 
             
              # @param [[String]] data base64 encoded data
         | 
| 576 572 | 
             
              # @return [boolean] true if successful, otherwise an exception is thrown
         | 
| 577 | 
            -
              def  | 
| 573 | 
            +
              def add_base64_encoded_attachments_to_issue_with_key(issue_key, filenames, data)
         | 
| 578 574 | 
             
                response = invoke('soap:addBase64EncodedAttachmentsToIssue') { |msg|
         | 
| 579 575 | 
             
                  msg.add 'soap:in0', @auth_token
         | 
| 580 576 | 
             
                  msg.add 'soap:in1', issue_key
         | 
| @@ -588,7 +584,7 @@ module RemoteAPI | |
| 588 584 | 
             
                true
         | 
| 589 585 | 
             
              end
         | 
| 590 586 |  | 
| 591 | 
            -
              # @ | 
| 587 | 
            +
              # The @build_date attribute is a Time value, but does not include a time.
         | 
| 592 588 | 
             
              # @return [JIRA::ServerInfo]
         | 
| 593 589 | 
             
              def get_server_info
         | 
| 594 590 | 
             
                response = invoke('soap:getServerInfo') { |msg|
         | 
| @@ -599,7 +595,7 @@ module RemoteAPI | |
| 599 595 | 
             
              end
         | 
| 600 596 | 
             
            end
         | 
| 601 597 |  | 
| 602 | 
            -
            #TODO: v0. | 
| 598 | 
            +
            #TODO: v0.5
         | 
| 603 599 | 
             
            # createProjectRole
         | 
| 604 600 | 
             
            # deleteProjectAvatar
         | 
| 605 601 | 
             
            # getAvailableActions
         | 
| @@ -2,7 +2,16 @@ module JIRA | |
| 2 2 |  | 
| 3 3 | 
             
            # Represents a priority level. Straightforward.
         | 
| 4 4 | 
             
            class Priority
         | 
| 5 | 
            -
               | 
| 5 | 
            +
              # @return [String]
         | 
| 6 | 
            +
              attr_accessor :id
         | 
| 7 | 
            +
              # @return [String]
         | 
| 8 | 
            +
              attr_accessor :name
         | 
| 9 | 
            +
              # @return [String] is a hex value
         | 
| 10 | 
            +
              attr_accessor :color
         | 
| 11 | 
            +
              # @return [URL] A NSURL on MacRuby and a URI::HTTP object in CRuby
         | 
| 12 | 
            +
              attr_accessor :icon
         | 
| 13 | 
            +
              # @return [String]
         | 
| 14 | 
            +
              attr_accessor :description
         | 
| 6 15 |  | 
| 7 16 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 8 17 | 
             
              # @todo change @color to be some kind of hex Fixnum object
         | 
| @@ -23,7 +32,14 @@ end | |
| 23 32 |  | 
| 24 33 | 
             
            # Represents a resolution. Straightforward.
         | 
| 25 34 | 
             
            class Resolution
         | 
| 26 | 
            -
               | 
| 35 | 
            +
              # @return [String]
         | 
| 36 | 
            +
              attr_accessor :id
         | 
| 37 | 
            +
              # @return [String]
         | 
| 38 | 
            +
              attr_accessor :name
         | 
| 39 | 
            +
              # @return [URL] A NSURL on MacRuby and a URI::HTTP object in CRuby
         | 
| 40 | 
            +
              attr_accessor :icon
         | 
| 41 | 
            +
              # @return [String]
         | 
| 42 | 
            +
              attr_accessor :description
         | 
| 27 43 |  | 
| 28 44 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 29 45 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -42,7 +58,10 @@ end | |
| 42 58 |  | 
| 43 59 | 
             
            # Represents a field mapping.
         | 
| 44 60 | 
             
            class Field
         | 
| 45 | 
            -
               | 
| 61 | 
            +
              # @return [String]
         | 
| 62 | 
            +
              attr_accessor :id
         | 
| 63 | 
            +
              # @return [String]
         | 
| 64 | 
            +
              attr_accessor :name
         | 
| 46 65 |  | 
| 47 66 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 48 67 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -59,7 +78,12 @@ end | |
| 59 78 | 
             
            # Represents a custom field with values.
         | 
| 60 79 | 
             
            # @todo see if @key is always nil from the server
         | 
| 61 80 | 
             
            class CustomField
         | 
| 62 | 
            -
               | 
| 81 | 
            +
              # @return [String]
         | 
| 82 | 
            +
              attr_accessor :id
         | 
| 83 | 
            +
              # @return [String]
         | 
| 84 | 
            +
              attr_accessor :key
         | 
| 85 | 
            +
              # @return [[String]]
         | 
| 86 | 
            +
              attr_accessor :values
         | 
| 63 87 |  | 
| 64 88 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 65 89 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -88,8 +112,16 @@ end | |
| 88 112 |  | 
| 89 113 | 
             
            # Represents and issue type. Straight forward.
         | 
| 90 114 | 
             
            class IssueType
         | 
| 91 | 
            -
               | 
| 92 | 
            -
               | 
| 115 | 
            +
              # @return [String]
         | 
| 116 | 
            +
              attr_accessor :id
         | 
| 117 | 
            +
              # @return [String]
         | 
| 118 | 
            +
              attr_accessor :name
         | 
| 119 | 
            +
              # @return [URL]
         | 
| 120 | 
            +
              attr_accessor :icon
         | 
| 121 | 
            +
              # @return [String]
         | 
| 122 | 
            +
              attr_accessor :description
         | 
| 123 | 
            +
              # @return [boolean]
         | 
| 124 | 
            +
              attr_accessor :subtask
         | 
| 93 125 |  | 
| 94 126 | 
             
              # @return [boolean] true if the issue type is a subtask, otherwise false
         | 
| 95 127 | 
             
              def subtask?; @subtask; end
         | 
| @@ -102,7 +134,7 @@ class IssueType | |
| 102 134 | 
             
                issue_type             = IssueType.new
         | 
| 103 135 | 
             
                issue_type.id          = frag.xpath('id').to_s
         | 
| 104 136 | 
             
                issue_type.name        = frag.xpath('name').to_s
         | 
| 105 | 
            -
                issue_type.subtask     = frag.xpath(' | 
| 137 | 
            +
                issue_type.subtask     = frag.xpath('subTask').to_s == 'true'
         | 
| 106 138 | 
             
                issue_type.description = frag.xpath('description').to_s
         | 
| 107 139 | 
             
                url                    = frag.xpath('icon').to_s
         | 
| 108 140 | 
             
                issue_type.icon        = URL.new url unless url.nil?
         | 
| @@ -112,8 +144,22 @@ end | |
| 112 144 |  | 
| 113 145 | 
             
            # Represents a comment. Straight forward.
         | 
| 114 146 | 
             
            class Comment
         | 
| 115 | 
            -
               | 
| 116 | 
            -
              attr_accessor : | 
| 147 | 
            +
              # @return [String]
         | 
| 148 | 
            +
              attr_accessor :id
         | 
| 149 | 
            +
              # @return [String]
         | 
| 150 | 
            +
              attr_accessor :original_author
         | 
| 151 | 
            +
              # @return [String]
         | 
| 152 | 
            +
              attr_accessor :role_level
         | 
| 153 | 
            +
              # @return [String]
         | 
| 154 | 
            +
              attr_accessor :group_level
         | 
| 155 | 
            +
              # @return [String]
         | 
| 156 | 
            +
              attr_accessor :body
         | 
| 157 | 
            +
              # @return [Time]
         | 
| 158 | 
            +
              attr_accessor :create_date
         | 
| 159 | 
            +
              # @return [Time]
         | 
| 160 | 
            +
              attr_accessor :last_updated
         | 
| 161 | 
            +
              # @return [String]
         | 
| 162 | 
            +
              attr_accessor :update_author
         | 
| 117 163 |  | 
| 118 164 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 119 165 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -140,17 +186,22 @@ class Comment | |
| 140 186 | 
             
                msg.add 'id', @id
         | 
| 141 187 | 
             
                msg.add 'author', @original_author
         | 
| 142 188 | 
             
                msg.add 'body', @body
         | 
| 143 | 
            -
                msg.add 'created', @created
         | 
| 144 189 | 
             
                msg.add 'groupLevel', @group_level
         | 
| 145 190 | 
             
                msg.add 'roleLevel', @role_level
         | 
| 146 191 | 
             
                msg.add 'updateAuthor', @update_author
         | 
| 147 | 
            -
                msg.add 'updated', @last_updated
         | 
| 148 192 | 
             
              end
         | 
| 149 193 | 
             
            end
         | 
| 150 194 |  | 
| 151 195 | 
             
            # Represents a status. Straightforward.
         | 
| 152 196 | 
             
            class Status
         | 
| 153 | 
            -
               | 
| 197 | 
            +
              # @return [String]
         | 
| 198 | 
            +
              attr_accessor :id
         | 
| 199 | 
            +
              # @return [String]
         | 
| 200 | 
            +
              attr_accessor :name
         | 
| 201 | 
            +
              # @return [URL]
         | 
| 202 | 
            +
              attr_accessor :icon
         | 
| 203 | 
            +
              # @return [String]
         | 
| 204 | 
            +
              attr_accessor :description
         | 
| 154 205 |  | 
| 155 206 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 156 207 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -171,8 +222,18 @@ end | |
| 171 222 | 
             
            # included when you retrieve versions from the server.
         | 
| 172 223 | 
             
            # @todo find out why we don't get a description for this object
         | 
| 173 224 | 
             
            class Version
         | 
| 174 | 
            -
               | 
| 175 | 
            -
               | 
| 225 | 
            +
              # @return [String]
         | 
| 226 | 
            +
              attr_accessor :id
         | 
| 227 | 
            +
              # @return [String]
         | 
| 228 | 
            +
              attr_accessor :name
         | 
| 229 | 
            +
              # @return [Fixnum]
         | 
| 230 | 
            +
              attr_accessor :sequence
         | 
| 231 | 
            +
              # @return [boolean]
         | 
| 232 | 
            +
              attr_accessor :released
         | 
| 233 | 
            +
              # @return [boolean]
         | 
| 234 | 
            +
              attr_accessor :archived
         | 
| 235 | 
            +
              # @return [Time]
         | 
| 236 | 
            +
              attr_accessor :release_date
         | 
| 176 237 |  | 
| 177 238 | 
             
              # @return [boolean] true if the version has been released, otherwise false
         | 
| 178 239 | 
             
              def released?; @released; end
         | 
| @@ -202,6 +263,7 @@ class Version | |
| 202 263 | 
             
                msg.add 'name', @name
         | 
| 203 264 | 
             
                msg.add 'sequence', @sequence unless @sequence.nil?
         | 
| 204 265 | 
             
                msg.add 'releaseDate', @release_date.xmlschema unless @release_date.nil?
         | 
| 266 | 
            +
                msg.add 'released', @released
         | 
| 205 267 | 
             
              end
         | 
| 206 268 | 
             
            end
         | 
| 207 269 |  | 
| @@ -209,7 +271,14 @@ end | |
| 209 271 | 
             
            # API; a more useful case might be if you wanted to emulate the server's
         | 
| 210 272 | 
             
            # behaviour.
         | 
| 211 273 | 
             
            class Scheme
         | 
| 212 | 
            -
               | 
| 274 | 
            +
              # @return [String]
         | 
| 275 | 
            +
              attr_accessor :id
         | 
| 276 | 
            +
              # @return [String]
         | 
| 277 | 
            +
              attr_accessor :name
         | 
| 278 | 
            +
              # @return [String]
         | 
| 279 | 
            +
              attr_accessor :type
         | 
| 280 | 
            +
              # @return [String]
         | 
| 281 | 
            +
              attr_accessor :description
         | 
| 213 282 |  | 
| 214 283 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 215 284 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -236,7 +305,10 @@ end | |
| 236 305 |  | 
| 237 306 | 
             
            # Represents a component description for a project. Straightforward.
         | 
| 238 307 | 
             
            class Component
         | 
| 239 | 
            -
               | 
| 308 | 
            +
              # @return [String]
         | 
| 309 | 
            +
              attr_accessor :id
         | 
| 310 | 
            +
              # @return [String]
         | 
| 311 | 
            +
              attr_accessor :name
         | 
| 240 312 |  | 
| 241 313 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 242 314 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -251,10 +323,30 @@ class Component | |
| 251 323 | 
             
            end
         | 
| 252 324 |  | 
| 253 325 | 
             
            # Represents a project configuration. NOT straightforward.
         | 
| 254 | 
            -
            #  | 
| 326 | 
            +
            # You need to explicitly ask for schemes in order to get them. By
         | 
| 327 | 
            +
            # default, most project fetching methods purposely leave out all
         | 
| 328 | 
            +
            # the scheme information as permission schemes can be very large.
         | 
| 255 329 | 
             
            class Project
         | 
| 256 | 
            -
               | 
| 257 | 
            -
              attr_accessor : | 
| 330 | 
            +
              # @return [String]
         | 
| 331 | 
            +
              attr_accessor :id
         | 
| 332 | 
            +
              # @return [String]
         | 
| 333 | 
            +
              attr_accessor :name
         | 
| 334 | 
            +
              # @return [String]
         | 
| 335 | 
            +
              attr_accessor :key
         | 
| 336 | 
            +
              # @return [URL]
         | 
| 337 | 
            +
              attr_accessor :url
         | 
| 338 | 
            +
              # @return [URL]
         | 
| 339 | 
            +
              attr_accessor :project_url
         | 
| 340 | 
            +
              # @return [String]
         | 
| 341 | 
            +
              attr_accessor :lead
         | 
| 342 | 
            +
              # @return [String]
         | 
| 343 | 
            +
              attr_accessor :description
         | 
| 344 | 
            +
              # @return [JIRA::Scheme]
         | 
| 345 | 
            +
              attr_accessor :issue_security_scheme
         | 
| 346 | 
            +
              # @return [JIRA::Scheme]
         | 
| 347 | 
            +
              attr_accessor :notification_scheme
         | 
| 348 | 
            +
              # @return [JIRA::PermissionScheme]
         | 
| 349 | 
            +
              attr_accessor :permission_scheme
         | 
| 258 350 |  | 
| 259 351 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 260 352 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -296,8 +388,18 @@ end | |
| 296 388 |  | 
| 297 389 | 
             
            # Contains a base64 encoded avatar image and some metadata. Straightforward.
         | 
| 298 390 | 
             
            class Avatar
         | 
| 299 | 
            -
               | 
| 300 | 
            -
               | 
| 391 | 
            +
              # @return [String]
         | 
| 392 | 
            +
              attr_accessor :id
         | 
| 393 | 
            +
              # @return [String]
         | 
| 394 | 
            +
              attr_accessor :owner
         | 
| 395 | 
            +
              # @return [String]
         | 
| 396 | 
            +
              attr_accessor :type
         | 
| 397 | 
            +
              # @return [String]
         | 
| 398 | 
            +
              attr_accessor :content_type
         | 
| 399 | 
            +
              # @return [String]
         | 
| 400 | 
            +
              attr_accessor :base64_data
         | 
| 401 | 
            +
              # @return [boolean] indicates if the image is the system default
         | 
| 402 | 
            +
              attr_accessor :system
         | 
| 301 403 |  | 
| 302 404 | 
             
              # @return [boolean] true if avatar is the default system avatar, else false
         | 
| 303 405 | 
             
              def system?; @system; end
         | 
| @@ -327,11 +429,48 @@ end | |
| 327 429 | 
             
            #
         | 
| 328 430 | 
             
            # Issues with an UNRESOLVED status will have nil for the value of @resolution.
         | 
| 329 431 | 
             
            class Issue
         | 
| 330 | 
            -
               | 
| 331 | 
            -
              attr_accessor : | 
| 332 | 
            -
               | 
| 333 | 
            -
              attr_accessor : | 
| 334 | 
            -
               | 
| 432 | 
            +
              # @return [String]
         | 
| 433 | 
            +
              attr_accessor :id
         | 
| 434 | 
            +
              # @return [String]
         | 
| 435 | 
            +
              attr_accessor :key
         | 
| 436 | 
            +
              # @return [String]
         | 
| 437 | 
            +
              attr_accessor :summary
         | 
| 438 | 
            +
              # @return [String]
         | 
| 439 | 
            +
              attr_accessor :description
         | 
| 440 | 
            +
              # @return [String]
         | 
| 441 | 
            +
              attr_accessor :type_id
         | 
| 442 | 
            +
              # @return [Time]
         | 
| 443 | 
            +
              attr_accessor :last_updated
         | 
| 444 | 
            +
              # @return [Fixnum]
         | 
| 445 | 
            +
              attr_accessor :votes
         | 
| 446 | 
            +
              # @return [String]
         | 
| 447 | 
            +
              attr_accessor :status_id
         | 
| 448 | 
            +
              # @return [String]
         | 
| 449 | 
            +
              attr_accessor :assignee_name
         | 
| 450 | 
            +
              # @return [String]
         | 
| 451 | 
            +
              attr_accessor :reporter_name
         | 
| 452 | 
            +
              # @return [String]
         | 
| 453 | 
            +
              attr_accessor :priority_id
         | 
| 454 | 
            +
              # @return [String]
         | 
| 455 | 
            +
              attr_accessor :project_name
         | 
| 456 | 
            +
              # @return [[JIRA::Version]]
         | 
| 457 | 
            +
              attr_accessor :affects_versions
         | 
| 458 | 
            +
              # @return [Time]
         | 
| 459 | 
            +
              attr_accessor :create_date
         | 
| 460 | 
            +
              # @return [Time]
         | 
| 461 | 
            +
              attr_accessor :due_date
         | 
| 462 | 
            +
              # @return [[JIRA::Version]]
         | 
| 463 | 
            +
              attr_accessor :fix_versions
         | 
| 464 | 
            +
              # @return [String]
         | 
| 465 | 
            +
              attr_accessor :resolution_id
         | 
| 466 | 
            +
              # @return [String]
         | 
| 467 | 
            +
              attr_accessor :environment
         | 
| 468 | 
            +
              # @return [[JIRA::Component]]
         | 
| 469 | 
            +
              attr_accessor :components
         | 
| 470 | 
            +
              # @return [[String]]
         | 
| 471 | 
            +
              attr_accessor :attachment_names
         | 
| 472 | 
            +
              # @return [[JIRA::CustomField]]
         | 
| 473 | 
            +
              attr_accessor :custom_field_values
         | 
| 335 474 |  | 
| 336 475 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 337 476 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -439,7 +578,12 @@ end | |
| 439 578 |  | 
| 440 579 | 
             
            # Contains the basic information about a user. Straightforward.
         | 
| 441 580 | 
             
            class User
         | 
| 442 | 
            -
               | 
| 581 | 
            +
              # @return [String]
         | 
| 582 | 
            +
              attr_accessor :name
         | 
| 583 | 
            +
              # @return [String]
         | 
| 584 | 
            +
              attr_accessor :full_name
         | 
| 585 | 
            +
              # @return [String]
         | 
| 586 | 
            +
              attr_accessor :email
         | 
| 443 587 |  | 
| 444 588 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 445 589 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -457,7 +601,10 @@ end | |
| 457 601 | 
             
            # A structure that is a bit of a hack. It is essentially just a key-value pair
         | 
| 458 602 | 
             
            # that is used mainly by {RemoteAPI#update_issue}.
         | 
| 459 603 | 
             
            class FieldValue
         | 
| 460 | 
            -
               | 
| 604 | 
            +
              # @return [String]
         | 
| 605 | 
            +
              attr_accessor :id
         | 
| 606 | 
            +
              # @return [[String,Time,URL,JIRA::*,nil]] hard to say what the type should be
         | 
| 607 | 
            +
              attr_accessor :values
         | 
| 461 608 |  | 
| 462 609 | 
             
              # Factory method that gives you a nil value for the given id.
         | 
| 463 610 | 
             
              # @param [String] id name of the field for @values
         | 
| @@ -485,7 +632,18 @@ end | |
| 485 632 | 
             
            # appears to be of the form
         | 
| 486 633 | 
             
            # $ENDPOINT_URL/secure/attachment/$ATTACHMENT_ID/$ATTACHMENT_FILENAME
         | 
| 487 634 | 
             
            class AttachmentMetadata
         | 
| 488 | 
            -
               | 
| 635 | 
            +
              # @return [String]
         | 
| 636 | 
            +
              attr_accessor :id
         | 
| 637 | 
            +
              # @return [String]
         | 
| 638 | 
            +
              attr_accessor :author
         | 
| 639 | 
            +
              # @return [Time]
         | 
| 640 | 
            +
              attr_accessor :create_date
         | 
| 641 | 
            +
              # @return [String]
         | 
| 642 | 
            +
              attr_accessor :filename
         | 
| 643 | 
            +
              # @return [Fixnum] measured in @todo units
         | 
| 644 | 
            +
              attr_accessor :file_size
         | 
| 645 | 
            +
              # @return [String]
         | 
| 646 | 
            +
              attr_accessor :mime_type
         | 
| 489 647 |  | 
| 490 648 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 491 649 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -505,9 +663,20 @@ class AttachmentMetadata | |
| 505 663 | 
             
            end
         | 
| 506 664 |  | 
| 507 665 | 
             
            # Only contains basic information about the endpoint server.
         | 
| 666 | 
            +
            # @todo turn attributes back to read-only by not using a factory for init
         | 
| 508 667 | 
             
            class ServerInfo
         | 
| 509 | 
            -
               | 
| 510 | 
            -
              attr_accessor : | 
| 668 | 
            +
              # @return [URL]
         | 
| 669 | 
            +
              attr_accessor :base_url
         | 
| 670 | 
            +
              # @return [Time]
         | 
| 671 | 
            +
              attr_accessor :build_date
         | 
| 672 | 
            +
              # @return [Fixnum]
         | 
| 673 | 
            +
              attr_accessor :build_number
         | 
| 674 | 
            +
              # @return [String]
         | 
| 675 | 
            +
              attr_accessor :edition
         | 
| 676 | 
            +
              # @return [JIRA::TimeInfo]
         | 
| 677 | 
            +
              attr_accessor :server_time
         | 
| 678 | 
            +
              # @return [String]
         | 
| 679 | 
            +
              attr_accessor :version
         | 
| 511 680 |  | 
| 512 681 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 513 682 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -529,8 +698,13 @@ class ServerInfo | |
| 529 698 | 
             
            end
         | 
| 530 699 |  | 
| 531 700 | 
             
            # Simple structure for a time and time zone; used oddly.
         | 
| 701 | 
            +
            # The only place this structure is used is when #get_server_info is called.
         | 
| 702 | 
            +
            # @todo turn attributes back to read-only by not using a factory for init
         | 
| 532 703 | 
             
            class TimeInfo
         | 
| 533 | 
            -
               | 
| 704 | 
            +
              # @return [Time]
         | 
| 705 | 
            +
              attr_accessor :server_time
         | 
| 706 | 
            +
              # @return [String]
         | 
| 707 | 
            +
              attr_accessor :timezone
         | 
| 534 708 |  | 
| 535 709 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 536 710 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -547,7 +721,18 @@ end | |
| 547 721 | 
             
            # Represents a filter
         | 
| 548 722 | 
             
            # @todo find out what @project is supposed to be for
         | 
| 549 723 | 
             
            class Filter
         | 
| 550 | 
            -
               | 
| 724 | 
            +
              # @return [String]
         | 
| 725 | 
            +
              attr_accessor :id
         | 
| 726 | 
            +
              # @return [String]
         | 
| 727 | 
            +
              attr_accessor :name
         | 
| 728 | 
            +
              # @return [String]
         | 
| 729 | 
            +
              attr_accessor :author
         | 
| 730 | 
            +
              # @return [String]
         | 
| 731 | 
            +
              attr_accessor :project
         | 
| 732 | 
            +
              # @return [String]
         | 
| 733 | 
            +
              attr_accessor :description
         | 
| 734 | 
            +
              # @return [nil]
         | 
| 735 | 
            +
              attr_accessor :xml
         | 
| 551 736 |  | 
| 552 737 | 
             
              # Factory method that takes a fragment of a SOAP response.
         | 
| 553 738 | 
             
              # @param [Handsoap::XmlQueryFront::NokogiriDriver] frag
         | 
| @@ -565,4 +750,23 @@ class Filter | |
| 565 750 | 
             
              end
         | 
| 566 751 | 
             
            end
         | 
| 567 752 |  | 
| 753 | 
            +
            # @todo documentation for this class
         | 
| 754 | 
            +
            # @todo write a boolean accessor macro
         | 
| 755 | 
            +
            class ServerConfiguration
         | 
| 756 | 
            +
              attr_reader :time_tracking_hours_per_day, :time_tracking_hours_per_week
         | 
| 757 | 
            +
             | 
| 758 | 
            +
              def watching_allowed?; @watching_allowed; end
         | 
| 759 | 
            +
              def voting_allowed?; @voting_allowed; end
         | 
| 760 | 
            +
              def unassigned_issues_allowed?; @unassigned_issues_allowed; end
         | 
| 761 | 
            +
              def time_tracking_allowed?; @time_tracking_allowed; end
         | 
| 762 | 
            +
              def subtasks_allowed?; @subtasks_allowed; end
         | 
| 763 | 
            +
              def issue_linking_allowed?; @issue_linking_allowed; end
         | 
| 764 | 
            +
              def eternal_user_management_allowed?; @external_user_management; end
         | 
| 765 | 
            +
              def attachments_allowed?; @attachments_allowed; end
         | 
| 766 | 
            +
             | 
| 767 | 
            +
              def initialize(frag = nil)
         | 
| 768 | 
            +
                return if frag.nil?
         | 
| 769 | 
            +
              end
         | 
| 770 | 
            +
            end
         | 
| 771 | 
            +
             | 
| 568 772 | 
             
            end
         | 
    
        data/lib/jiraSOAP/url.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version | |
| 4 4 | 
             
              prerelease: false
         | 
| 5 5 | 
             
              segments: 
         | 
| 6 6 | 
             
              - 0
         | 
| 7 | 
            -
              -  | 
| 7 | 
            +
              - 4
         | 
| 8 8 | 
             
              - 0
         | 
| 9 | 
            -
              version: 0. | 
| 9 | 
            +
              version: 0.4.0
         | 
| 10 10 | 
             
            platform: ruby
         | 
| 11 11 | 
             
            authors: 
         | 
| 12 12 | 
             
            - Mark Rada
         | 
| @@ -14,7 +14,7 @@ autorequire: | |
| 14 14 | 
             
            bindir: bin
         | 
| 15 15 | 
             
            cert_chain: []
         | 
| 16 16 |  | 
| 17 | 
            -
            date: 2010-10 | 
| 17 | 
            +
            date: 2010-11-10 00:00:00 -05:00
         | 
| 18 18 | 
             
            default_executable: 
         | 
| 19 19 | 
             
            dependencies: 
         | 
| 20 20 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -83,10 +83,10 @@ files: | |
| 83 83 | 
             
            - lib/jiraSOAP.rb
         | 
| 84 84 | 
             
            - lib/jiraSOAP/JIRAservice.rb
         | 
| 85 85 | 
             
            - lib/jiraSOAP/handsoap_extensions.rb
         | 
| 86 | 
            -
            - lib/jiraSOAP/macruby_stuff.rb
         | 
| 87 86 | 
             
            - lib/jiraSOAP/remoteAPI.rb
         | 
| 88 87 | 
             
            - lib/jiraSOAP/remoteEntities.rb
         | 
| 89 88 | 
             
            - lib/jiraSOAP/url.rb
         | 
| 89 | 
            +
            - lib/macruby_stuff.rb
         | 
| 90 90 | 
             
            - LICENSE
         | 
| 91 91 | 
             
            - README.markdown
         | 
| 92 92 | 
             
            - test/jiraSOAP_test.rb
         |