Class: Asciidoctor::Confluence::ConfluenceAPI
- Inherits:
-
Object
- Object
- Asciidoctor::Confluence::ConfluenceAPI
- Defined in:
- lib/asciidoctor/confluence_api.rb
Constant Summary collapse
- DEFAULT_CONTENT_TYPE =
'application/json'
- API_CONTENT =
'rest/api/content'
Instance Attribute Summary collapse
-
#url ⇒ Object
readonly
Returns the value of attribute url.
Instance Method Summary collapse
- #build_api_content_url(confluence_options) ⇒ Object
- #create_connection ⇒ Object
- #create_or_update_page(update = false, page_id = nil) ⇒ Object
- #create_page ⇒ Object
- #find_page(page_id) ⇒ Object
- #find_page_by_title_and_space(space_key, title) ⇒ Object
-
#initialize(confluence_options, page) ⇒ ConfluenceAPI
constructor
A new instance of ConfluenceAPI.
- #update_page(page_id, current_revision) ⇒ Object
Constructor Details
#initialize(confluence_options, page) ⇒ ConfluenceAPI
Returns a new instance of ConfluenceAPI.
12 13 14 15 16 |
# File 'lib/asciidoctor/confluence_api.rb', line 12 def initialize(, page) @url = build_api_content_url() @auth = [:auth] unless [:auth].nil? @page = page end |
Instance Attribute Details
#url ⇒ Object (readonly)
Returns the value of attribute url.
8 9 10 |
# File 'lib/asciidoctor/confluence_api.rb', line 8 def url @url end |
Instance Method Details
#build_api_content_url(confluence_options) ⇒ Object
18 19 20 21 22 |
# File 'lib/asciidoctor/confluence_api.rb', line 18 def build_api_content_url() host = [:host] host = host + '/' unless [:host].end_with?('/') host+ API_CONTENT end |
#create_connection ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/asciidoctor/confluence_api.rb', line 24 def create_connection conn = Faraday.new do |faraday| faraday.request :url_encoded faraday.adapter Faraday.default_adapter end conn.basic_auth(@auth[:username], @auth[:password]) unless @auth.nil? conn end |
#create_or_update_page(update = false, page_id = nil) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/asciidoctor/confluence_api.rb', line 34 def create_or_update_page(update=false, page_id=nil) if update if page_id.nil? confluence_page = find_page_by_title_and_space(@page.space_key, @page.title) response_body = JSON.parse confluence_page.body results = response_body['results'] length = results.length if length == 1 page_id = results[0]['id'] current_revision = results[0]['version']['number'] else plural = length > 0 ? 's' : '' raise Exception, "Error: #{length} page#{plural} entitled '#{@page.title}' found in the space '#{@page.space_key}'" end else confluence_page = find_page page_id response_body = JSON.parse confluence_page.body current_revision = response_body['version']['number'] end update_page page_id, current_revision else create_page end end |
#create_page ⇒ Object
62 63 64 65 66 67 68 69 |
# File 'lib/asciidoctor/confluence_api.rb', line 62 def create_page conn = create_connection conn.post do |req| req.url @url req.headers['Content-Type'] = DEFAULT_CONTENT_TYPE req.body = @page.to_json end end |
#find_page(page_id) ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/asciidoctor/confluence_api.rb', line 90 def find_page(page_id) conn = create_connection conn.get do |req| req.url "#{@url}/#{page_id}" req.headers['Content-Type'] = DEFAULT_CONTENT_TYPE end end |
#find_page_by_title_and_space(space_key, title) ⇒ Object
82 83 84 85 86 87 88 |
# File 'lib/asciidoctor/confluence_api.rb', line 82 def find_page_by_title_and_space(space_key, title) conn = create_connection conn.get do |req| req.url "#{@url}/?spaceKey=#{space_key}&title=#{title}&expand=version" req.headers['Content-Type'] = DEFAULT_CONTENT_TYPE end end |
#update_page(page_id, current_revision) ⇒ Object
71 72 73 74 75 76 77 78 79 80 |
# File 'lib/asciidoctor/confluence_api.rb', line 71 def update_page(page_id, current_revision) @page.revision = current_revision.to_i+1 conn = create_connection conn.put do |req| req.url "#{@url}/#{page_id}" req.headers['Content-Type'] = DEFAULT_CONTENT_TYPE req.body = @page.to_json end end |