confluence-rest-api 1.0.8 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
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: {}