Class: JIRA::JIRAService

Inherits:
Handsoap::Service
  • Object
show all
Includes:
RemoteAPI
Defined in:
lib/jiraSOAP/JIRAservice.rb

Overview

TODO:

consider adding a finalizer that will try to logout

Interface to the JIRA endpoint server; set at initialization.

Due to limitations in Handsoap::Service, there can only be one endpoint. You can have multiple instances of that one endpoint if you would like; but if you try to set a differnt endpoint for a new instance you will end up messing up any other instances currently being used.

It is best to treat this class as a singleton. There should only be one. However, this is not enforced, in case you want to be able to login as multiple users to the same endpoint.

HTTPS is not supported in this version.

Constant Summary

Constants included from RemoteAPI

RemoteAPI::RESPONSE_XPATH

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from RemoteAPI

#add_base64_encoded_attachments_to_issue_with_key, #add_comment_to_issue_with_key, #add_version_to_project_with_key, #create_issue_with_issue, #create_project_with_project, #create_user, #delete_user_with_name, #get_attachments_for_issue_with_key, #get_comment_with_id, #get_comments_for_issue_with_key, #get_custom_fields, #get_favourite_filters, #get_issue_count_for_filter_with_id, #get_issue_types, #get_issue_types_for_project_with_id, #get_issue_with_id, #get_issue_with_key, #get_issues_from_filter_with_id, #get_issues_from_jql_search, #get_notification_schemes, #get_priorities, #get_project_avatar_for_key, #get_project_avatars_for_key, #get_project_including_schemes_with_id, #get_project_with_id, #get_project_with_key, #get_resolutions, #get_server_configuration, #get_server_info, #get_statuses, #get_subtask_issue_types, #get_subtask_issue_types_for_project_with_id, #get_user_with_name, #get_versions_for_project, #login, #logout, #refresh_custom_fields, #release_state_for_version_for_project, #set_archive_state_for_version_for_project, #update_comment, #update_issue, #update_project_with_project

Constructor Details

#initialize(endpoint_url) ⇒ JIRAService

Slightly hacky in order to set the endpoint at the initialization.

Parameters:

  • endpoint_url

    URL for the JIRA server



43
44
45
46
47
48
49
50
# File 'lib/jiraSOAP/JIRAservice.rb', line 43

def initialize(endpoint_url)
  @endpoint_url = endpoint_url
  endpoint_data = {
    :uri => "#{endpoint_url}/rpc/soap/jirasoapservice-v2",
    :version => 2
  }
  self.class.endpoint endpoint_data
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ nil

Something to help users out until the rest of the API is implemented.

Returns:

  • (nil)


54
55
56
57
58
59
60
# File 'lib/jiraSOAP/JIRAservice.rb', line 54

def method_missing(method, *args)
  message  = "#{method} is not a valid method. Check the documentation; the "
  message << 'method may not be implemented or has changed in recent '
  message << 'revisions. The API has not been stabilized yet.'
  STDERR.puts message
  super method, *args
end

Instance Attribute Details

#auth_tokenString (readonly)

Returns:

  • (String)


22
23
24
# File 'lib/jiraSOAP/JIRAservice.rb', line 22

def auth_token
  @auth_token
end

#endpoint_urlString (readonly)

Returns:

  • (String)


28
29
30
# File 'lib/jiraSOAP/JIRAservice.rb', line 28

def endpoint_url
  @endpoint_url
end

#userString (readonly)

Returns:

  • (String)


25
26
27
# File 'lib/jiraSOAP/JIRAservice.rb', line 25

def user
  @user
end

Class Method Details

.instance_with_endpoint(url, user, password) ⇒ JIRA::JIRAService

Factory method to initialize and login.

Parameters:

  • url (String)

    URL for the JIRA server

  • user (String)

    JIRA user name to login with

  • password (String)

Returns:



35
36
37
38
39
# File 'lib/jiraSOAP/JIRAservice.rb', line 35

def self.instance_with_endpoint(url, user, password)
  jira = JIRAService.new url
  jira. user, password
  jira
end