sappho-data-publisher 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,33 +14,44 @@ module Sappho
14
14
  def initialize
15
15
  @appName = self.class.name.split("::").last
16
16
  @appServer = nil
17
- @loggedIn = false
17
+ @token = nil
18
18
  end
19
19
 
20
20
  def connect
21
- raise "you have already attempted to connect to #{@appName}" if @appServer or @loggedIn
21
+ raise "you have already attempted to connect to #{@appName}" if @appServer
22
22
  modules = Sappho::ApplicationModuleRegister.instance
23
23
  @config = modules.get :configuration
24
24
  @logger = modules.get :log
25
25
  url = @config.data["#{@appName.downcase}.url"]
26
26
  mock = "mock#{@appName}"
27
27
  @appServer = modules.set?(mock) ? modules.get(mock).mockInstance(url) : yield(url)
28
+ @logger.info "connected to #{@appName} #{url}"
29
+ login
30
+ end
31
+
32
+ def login
28
33
  @token = @appServer.login @config.data["#{@appName.downcase}.username"], @config.data["#{@appName.downcase}.password"]
29
- @logger.info "logged into #{@appName} #{url}"
30
- @loggedIn = true
34
+ @logger.info "logged in to #{@appName}"
31
35
  end
32
36
 
33
- def shutdown
37
+ def logout
34
38
  if loggedIn?
35
- @appServer.logout @token
36
- @logger.info "logged out of #{@appName}"
39
+ begin
40
+ @appServer.logout @token
41
+ @logger.info "logged out of #{@appName}"
42
+ rescue
43
+ end
44
+ @token = nil
37
45
  end
38
- @loggedIn = false
46
+ end
47
+
48
+ def shutdown
49
+ logout
39
50
  @appServer = nil
40
51
  end
41
52
 
42
53
  def loggedIn?
43
- @appServer and @loggedIn
54
+ @token
44
55
  end
45
56
 
46
57
  private
@@ -43,25 +43,30 @@ module Sappho
43
43
 
44
44
  def getPage spaceKey, pageName
45
45
  checkLoggedIn
46
+ logout
47
+ login
46
48
  @logger.info "reading wiki page #{spaceKey}:#{pageName}"
47
49
  @appServer.getPage(@token, spaceKey, pageName)['content']
48
50
  end
49
51
 
50
52
  def setPage spaceKey, parentPageName, pageName, content
51
53
  checkLoggedIn
54
+ logout
55
+ login
52
56
  begin
53
- page = @appServer.getPage(@token, spaceKey, pageName)
57
+ page = @appServer.getPage @token, spaceKey, pageName
54
58
  page['content'] = content
55
59
  @logger.info "rewriting existing wiki page #{spaceKey}:#{pageName}"
60
+ @appServer.updatePage @token, page, {'versionComment' => "Automatic update", 'minorEdit' => false}
56
61
  rescue
57
62
  page = {
58
- 'space' => spaceKey,
59
- 'parentId' => @appServer.getPage(@token, spaceKey, parentPageName)['id'],
60
- 'title' => pageName,
61
- 'content' => content }
63
+ 'space' => spaceKey,
64
+ 'parentId' => @appServer.getPage(@token, spaceKey, parentPageName)['id'],
65
+ 'title' => pageName,
66
+ 'content' => content}
62
67
  @logger.info "creating new wiki page #{spaceKey}:#{pageName} as child of #{parentPageName}"
68
+ @appServer.storePage @token, page
63
69
  end
64
- @appServer.storePage @token, page
65
70
  end
66
71
 
67
72
  end
@@ -74,33 +74,29 @@ module Sappho
74
74
 
75
75
  def jqlQuery jql, maxresults
76
76
  @logger.info "fetching up to #{maxresults} Jira issues for #{jql}"
77
- return @appServer.getIssuesFromJqlSearch @token, jql, maxresults
78
- end
79
-
80
- def getJiraIssueDetails issue, cookedIssue
81
- ['id', 'key', 'summary', 'description', 'assignee', 'created', 'duedate', 'priority',
82
- 'project', 'reporter', 'resolution', 'status', 'type', 'updated'].each { |key|
83
- cookedIssue[key] = issue[key]
84
- }
85
- cookedIssue['components'] = components = []
86
- issue['components'].each { |component| components << component['name'] }
87
- cookedIssue['cf'] = customFields = {}
88
- @allCustomFields.each { |customField|
89
- customFields[cfname customField['id']] = {'name' => customField['name']}
90
- }
91
- issue['customFieldValues'].each { |customFieldValue|
92
- customFields[cfname customFieldValue['customfieldId']]['values'] =
93
- customFieldValue['values']
94
- }
95
- cookedIssue['subtasks'] = cookedSubtasks = []
96
- subtasks = jqlQuery "parent=#{issue['key']}", 100
97
- cookIssues subtasks, cookedSubtasks
77
+ @appServer.getIssuesFromJqlSearch @token, jql, maxresults
98
78
  end
99
79
 
100
80
  def cookIssues issues, cookedIssues
101
81
  issues.each { |issue|
102
82
  cookedIssue = {}
103
- getJiraIssueDetails issue, cookedIssue
83
+ ['id', 'key', 'summary', 'description', 'assignee', 'created', 'duedate', 'priority',
84
+ 'project', 'reporter', 'resolution', 'status', 'type', 'updated'].each { |key|
85
+ cookedIssue[key] = issue[key]
86
+ }
87
+ cookedIssue['components'] = components = []
88
+ issue['components'].each { |component| components << component['name'] }
89
+ cookedIssue['cf'] = customFields = {}
90
+ @allCustomFields.each { |customField|
91
+ customFields[cfname customField['id']] = {'name' => customField['name']}
92
+ }
93
+ issue['customFieldValues'].each { |customFieldValue|
94
+ customFields[cfname customFieldValue['customfieldId']]['values'] =
95
+ customFieldValue['values']
96
+ }
97
+ cookedIssue['subtasks'] = cookedSubtasks = []
98
+ subtasks = jqlQuery "parent=#{issue['key']}", 100
99
+ cookIssues subtasks, cookedSubtasks
104
100
  cookedIssues << cookedIssue
105
101
  }
106
102
  end
@@ -7,7 +7,7 @@ module Sappho
7
7
  module Data
8
8
  module Publisher
9
9
  NAME = 'sappho-data-publisher'
10
- VERSION = '0.2.3'
10
+ VERSION = '0.2.4'
11
11
  AUTHORS = ['Andrew Heald']
12
12
  EMAILS = ['andrew@heald.co.uk']
13
13
  HOMEPAGE = 'https://wiki.sappho.org.uk/display/DP/sappho-data-publisher'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sappho-data-publisher
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 3
10
- version: 0.2.3
9
+ - 4
10
+ version: 0.2.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Heald