confluence-rest-api 1.0.8 → 1.0.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6470ce4a3916a34479ddbd6d9b8e880ebd81c880f9fb469418b8c231da8016be
4
- data.tar.gz: a2d2d4d82cd187ff1ae6e748b2031fdab215555c9593adecc2ef75fdbab437ee
3
+ metadata.gz: ed5f052109908ba6e1cc2ed313802359131330793cef7a9bc444c4d1f72bfe22
4
+ data.tar.gz: 7d7d21092d94dde2f347f018173b8cd611b74c9f6fc20b8bbc79ba146aa2b72a
5
5
  SHA512:
6
- metadata.gz: a5d3f5be7749537bd8c750535257ca1082722eb0ebead4336da7188845f34a1e961a80d9d0794f3faae306b128639055620937800c5a751cd25c8ff40574d8b3
7
- data.tar.gz: a38c201489ec9839a16b3571db9b0636702dbe2abd9b258dfff9450e0df08fdaada08dcd0f86dc4902edae5d2d62f9f118eddcff9fb0b0c21d35f743c33359db
6
+ metadata.gz: 24fb564f85688ed4435cc0f654f36b69a351467fe851114802435e1b733d089f958e1bcca66c5341f7efed2eb59ac4e6b7f84e911d1418750d2935d99c6f625b
7
+ data.tar.gz: 0351b16fb8e6e743ed6c5eadce6c92869406ed74c00ec6437478183ed829d2ebe1b740c8906f948f9cfd51f586c2f8b56f1615a19b086368b037cd432d266cb3
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # Ruby Confluence REST API Client
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/confluence-rest-api.svg)](https://badge.fury.io/rb/confluence-rest-api)
4
+
4
5
  ### Installation
5
6
  ```cassandraql
6
7
  gem install confluence-rest-api
7
8
  ```
9
+
8
10
  ### Usage
9
11
  ```ruby
10
12
  require 'confluence-rest-api'
@@ -63,30 +65,6 @@ unless home_page.id.nil?
63
65
  client.create_page_with_parent('My Page Title', space_key, 'My Page Body Content', home_page.id)
64
66
  end
65
67
 
66
- ###########################################################
67
- # Update a page with a new title and keep the same parent
68
- ###########################################################
69
- page_obj = PageObject.new('My Page Title', space_key)
70
- title = 'My New Page Title'
71
- # Storage Format for the page can also be modified here if needed.
72
- content = page_obj.storage_format
73
- unless page_obj.id.nil?
74
- client.update_page_with_no_parent(page_obj, title, space_key, content)
75
- end
76
-
77
- ################################################
78
- # Update a page with a new title and new parent
79
- ################################################
80
- page_obj = PageObject.new('My Page Title', space_key)
81
- parent_obj = PageObject.new('My New Parent', space_key)
82
- title = 'My New Page Title'
83
- # Storage Format for the page can also be modified here if needed.
84
- content = page_obj.storage_format
85
- unless page_obj.id.nil? || parent_obj.id.nil?
86
- client.update_page_with_parent(page_obj, title, parent_obj, space_key, content)
87
- end
88
-
89
-
90
68
  #############################
91
69
  # Add an attachment to a page
92
70
  #############################
@@ -97,7 +75,7 @@ unless page_obj.id.nil?
97
75
  if page_obj.attach_binary_file(image, img_base_name).nil?
98
76
  puts "*** WARNING: Image attachment #{image} for #{title} was not successful."
99
77
  else
100
- puts "Image attachment #{image} for #{title} was successful."
78
+ puts "Image attachment #{image} for #{page_obj.title} was successful."
101
79
  end
102
80
  end
103
81
 
@@ -134,6 +112,27 @@ end
134
112
  page_obj = PageObject.new('My Page Title', space_key)
135
113
  page_obj.save_file_attachments(page_obj.id, './')
136
114
 
115
+ ################################################
116
+ # Get all labels associated with a given page ID
117
+ ################################################
118
+ page_obj = PageObject.new('My Page Title', space_key)
119
+ page_labels = page_obj.labels(page_obj.id)
120
+ puts "Page Labels for #{page_obj.title}: #{page_labels}"
121
+
122
+ #########################
123
+ # Adding labels to a page
124
+ #########################
125
+ page_obj = PageObject.new('My Page Title', space_key)
126
+ new_labels = ['my_label1','my_label2']
127
+ page_obj.add_labels(new_labels)
128
+
129
+ #############################
130
+ # Deleting labels from a page
131
+ #############################
132
+ page_obj = PageObject.new('My Page Title', space_key)
133
+ del_labels = ['my_label1','my_label2']
134
+ page_obj.delete_labels(del_labels)
135
+
137
136
  ###############
138
137
  # Delete a page
139
138
  ###############
@@ -1,14 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = %q{confluence-rest-api}
3
- s.version = "1.0.8"
4
- s.date = %q{2020-05-22}
3
+ s.version = "1.0.10"
4
+ s.date = %q{2020-08-25}
5
5
  s.summary = %q{Ruby REST API Client to create, update, and view pages}
6
6
  s.authors = "Gregory J. Miller"
7
7
  s.files = [
8
8
  "lib/confluence-rest-api.rb", "lib/confluence.rb", "lib/page.rb", "lib/storage_format.rb", "README.md", "confluence-rest-api.gemspec"
9
9
  ]
10
10
  s.license = "MIT"
11
- s.homepage = "https://github.com/grmi64/confluence-rest-api"
11
+ s.homepage = "https://github.com/GM314/confluence-rest-api"
12
12
  s.add_runtime_dependency 'rest-client', '~> 2.0', '>= 2.0.0'
13
13
 
14
14
  end
@@ -22,14 +22,14 @@ class ConfluenceClient
22
22
 
23
23
  end
24
24
 
25
- def update_page_with_parent(page_obj, title, parent_page_obj, spacekey, content)
25
+ def update_page_with_parent(page_obj, parent_page_obj, spacekey, content)
26
26
 
27
27
  version = page_obj.version + 1
28
28
 
29
29
  page_meta = { type: 'update_page_with_parent',
30
30
  pageid: page_obj.id,
31
31
  parentid: parent_page_obj.id,
32
- title: title,
32
+ title: page_obj.title,
33
33
  spacekey: spacekey,
34
34
  content: content,
35
35
  version: version }
@@ -49,13 +49,13 @@ class ConfluenceClient
49
49
 
50
50
  end
51
51
 
52
- def update_page_with_no_parent(page_obj, title, spacekey, content)
52
+ def update_page_with_no_parent(page_obj, spacekey, content)
53
53
 
54
54
  version = page_obj.version + 1
55
55
 
56
56
  page_meta = { type: 'update_page_with_no_parent',
57
57
  pageid: page_obj.id,
58
- title: title,
58
+ title: page_obj.title,
59
59
  spacekey: spacekey,
60
60
  content: content,
61
61
  version: version }
@@ -69,6 +69,80 @@ class PageObject < ConfluenceClient
69
69
  true
70
70
  end
71
71
 
72
+ def labels(page_id)
73
+ begin
74
+ res = RestClient.get "#{@@conf_url}/#{@@urn}/#{page_id}/label", {params: {
75
+ :os_username => @@login, :os_password => @@pwd,
76
+ :start => 0, :limit => 1000
77
+ }}
78
+ rescue RestClient::ExceptionWithResponse => e
79
+ puts Nokogiri.XML(e.response)
80
+ nil
81
+ end
82
+ size = JSON.parse(res)['size']
83
+ if size > 0
84
+ size -= 1
85
+ labels = Array.new
86
+ (0..size).each do |idx|
87
+ labels << JSON.parse(res)['results'][idx]["name"]
88
+ end
89
+ labels
90
+ else
91
+ nil
92
+ end
93
+ end
94
+
95
+ def add_labels(labels)
96
+ payload = String.new('[')
97
+ json_label = '{
98
+ "prefix": "global",
99
+ "name": "__LABEL__"
100
+ }'.freeze
101
+
102
+ labels.each_with_index do |l, idx|
103
+ jl = json_label.sub(/__LABEL__/, l)
104
+ if idx == 0
105
+ payload += jl
106
+ else
107
+ payload += ',' + jl
108
+ end
109
+ end
110
+ payload = payload + ']'
111
+ puts "Add label payload: #{payload}"
112
+
113
+ begin
114
+ res = RestClient.post "#{@@conf_url}/#{@@urn}/#{@id}/label?os_username=#{@@login}&os_password=#{@@pwd}", payload, :content_type => 'application/json'
115
+ rescue RestClient::ExceptionWithResponse => e
116
+ puts Nokogiri.XML(e.response)
117
+ end
118
+ if res.nil?
119
+ puts "*** WARNING: Label update failed for page with ID: #{@id}"
120
+ nil
121
+ else
122
+ puts JSON.parse(res)
123
+ true
124
+ end
125
+ end
126
+
127
+ # Note that we must use query parameters here because deleting labels with a "/" will fail otherwise.
128
+ def delete_labels(labels)
129
+ labels.each do |l|
130
+ puts "Deleting label: #{l}"
131
+ begin
132
+ res = RestClient.delete "#{@@conf_url}/#{@@urn}/#{@id}/label?name=#{l}&os_username=#{@@login}&os_password=#{@@pwd}"
133
+ rescue RestClient::ExceptionWithResponse => e
134
+ puts Nokogiri.XML(e.response)
135
+ end
136
+ if res.nil?
137
+ puts "*** WARNING: Label removal failed for page with ID: #{@id}"
138
+ return nil
139
+ end
140
+ end
141
+
142
+ true
143
+
144
+ end
145
+
72
146
  # Return an array of all page attachment information
73
147
  def get_all_attachments(page_id)
74
148
 
@@ -1,4 +1,4 @@
1
- class PagePayload
1
+ class StorageFormat
2
2
  attr_accessor :page_format
3
3
 
4
4
  VALID_OPTIONS = [:type, :title, :spacekey, :content, :pageid, :parentid, :version]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: confluence-rest-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory J. Miller
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-22 00:00:00.000000000 Z
11
+ date: 2020-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -42,7 +42,7 @@ files:
42
42
  - lib/confluence.rb
43
43
  - lib/page.rb
44
44
  - lib/storage_format.rb
45
- homepage: https://github.com/grmi64/confluence-rest-api
45
+ homepage: https://github.com/GM314/confluence-rest-api
46
46
  licenses:
47
47
  - MIT
48
48
  metadata: {}