Class: HybridPlatformsConductor::Confluence
- Inherits:
-
Object
- Object
- HybridPlatformsConductor::Confluence
- Includes:
- LoggerHelpers
- Defined in:
- lib/hybrid_platforms_conductor/confluence.rb
Overview
Object used to access Confluence API
Constant Summary
Constants included from LoggerHelpers
LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR
Class Method Summary collapse
-
.with_confluence(confluence_url, logger, logger_stderr) ⇒ Object
Provide a Confluence connector, and make sure the password is being cleaned when exiting.
Instance Method Summary collapse
-
#initialize(confluence_url, confluence_user_name, confluence_password, logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR)) ⇒ Confluence
constructor
Constructor.
-
#page_info(page_id) ⇒ Object
Return some info of a given page ID.
-
#page_storage_format(page_id) ⇒ Object
Return a Confluence storage format content from a page ID.
-
#update_page(page_id, content, version: nil) ⇒ Object
Update a Confluence page to a new content.
Methods included from LoggerHelpers
#err, #init_loggers, #log_component=, #log_debug?, #log_level=, #out, #section, #set_loggers_format, #stderr_device, #stderr_device=, #stderr_displayed?, #stdout_device, #stdout_device=, #stdout_displayed?, #stdouts_to_s, #with_progress_bar
Constructor Details
#initialize(confluence_url, confluence_user_name, confluence_password, logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR)) ⇒ Confluence
Constructor
- Parameters
-
confluence_url (String): The Confluence URL
-
confluence_user_name (String): Confluence user name to be used when querying the API
-
confluence_password (String): Confluence password to be used when querying the API
-
logger (Logger): Logger to be used [default = Logger.new(STDOUT)]
-
logger_stderr (Logger): Logger to be used for stderr [default = Logger.new(STDERR)]
37 38 39 40 41 42 |
# File 'lib/hybrid_platforms_conductor/confluence.rb', line 37 def initialize(confluence_url, confluence_user_name, confluence_password, logger: Logger.new(STDOUT), logger_stderr: Logger.new(STDERR)) init_loggers(logger, logger_stderr) @confluence_url = confluence_url @confluence_user_name = confluence_user_name @confluence_password = confluence_password end |
Class Method Details
.with_confluence(confluence_url, logger, logger_stderr) ⇒ Object
Provide a Confluence connector, and make sure the password is being cleaned when exiting.
- Parameters
-
confluence_url (String): The Confluence URL
-
logger (Logger): Logger to be used
-
logger_stderr (Logger): Logger to be used for stderr
-
Proc: Code called with the Confluence instance.
-
confluence (Confluence): The Confluence instance to use.
-
23 24 25 26 27 |
# File 'lib/hybrid_platforms_conductor/confluence.rb', line 23 def self.with_confluence(confluence_url, logger, logger_stderr) Credentials.with_credentials_for(:confluence, logger, logger_stderr, url: confluence_url) do |confluence_user, confluence_password| yield Confluence.new(confluence_url, confluence_user, confluence_password, logger: logger, logger_stderr: logger_stderr) end end |
Instance Method Details
#page_info(page_id) ⇒ Object
Return some info of a given page ID
- Parameters
-
page_id (String): Confluence page ID
- Result
-
Hash: Page information, as returned by the Confluence API
60 61 62 |
# File 'lib/hybrid_platforms_conductor/confluence.rb', line 60 def page_info(page_id) JSON.parse(call_api("rest/api/content/#{page_id}").body) end |
#page_storage_format(page_id) ⇒ Object
Return a Confluence storage format content from a page ID
- Parameters
-
page_id (String): Confluence page ID
- Result
-
Nokogiri::HTML: Storage format content, as a Nokogiri object
50 51 52 |
# File 'lib/hybrid_platforms_conductor/confluence.rb', line 50 def page_storage_format(page_id) Nokogiri::HTML(call_api("plugins/viewstorage/viewpagestorage.action?pageId=#{page_id}").body) end |
#update_page(page_id, content, version: nil) ⇒ Object
Update a Confluence page to a new content.
- Parameters
-
page_id (String): Confluence page ID
-
content (String): New content
-
version (String or nil): New version, or nil to automatically increase last existing version [default: nil]
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/hybrid_platforms_conductor/confluence.rb', line 70 def update_page(page_id, content, version: nil) info = page_info(page_id) version = info['version']['number'] + 1 if version.nil? log_debug "Update Confluence page #{page_id}..." call_api("rest/api/content/#{page_id}", :put) do |request| request['Content-Type'] = 'application/json' request.body = { type: 'page', title: info['title'], body: { storage: { value: content, representation: 'storage' } }, version: { number: version } }.to_json end end |