Just my blog
Blog about everything, mostly about tech stuff I made. Here is the list of stuff I'm using at my blog. Feel free to ask me about implementations.
- Mobaxterm SSH RDP FTP...
- Thunderbird Email client
- Filezilla FTP client/server
- Nirsoft Win utils
- Sysinternals Win utils
- Pi-Hole AD block by DNS
- NUT UPS manager
- Rpi MON Raspberry monitoring
- Free CAD 3D modelling
- Free Commander Far-like filemanager
- Bitwarden Password manager
- Django web framework
- celery multi-tasking
- celery-beat Celery + Django
- celery-results Celery + Django
- Pillow Python image lib
- wsgi mod Apache + Python
- requests best in WEB requests
- openpyxl make Excell docs
- p4python Perforce + Python
- paramiko SSH + Python
- pyvmomi ESXi Vcenter + Python
I'm using these libraries so you can ask me about them.
Atlassian Confluence REST API Making request and keep the session (Eng)
In this topic I'll show you how to make session to Atlassian Confluence with python requests and keep it in memory.
- http://docs.python-requests.org/en/master/
- https://docs.python.org/2.7/library/json.html
- https://confluence.atlassian.com/confkb/confluence-url-list-317949394.html
- https://developer.atlassian.com/confdev/confluence-server-rest-api/confluence-rest-api-examples
For someone who found this topic by "search machines", there is some more detailed how-to - probably can help you:
Python requests module:
At first you should know and understand how requests works, basically.
Check how your confluence works:
Next - you should know the point, where is your Confluence server make authorisation, in my situation it lies here (this is looks cozy, but this is our company's way. In your situation it can be simpler, as documented in links above): https://docs.YOURCOMPANYMAME.com/docs/dashboard.action?os_username=configipedia_service_account&os_password=PASSWORD
Then you compose a request like:
import json import requests confluence_auth_url = 'https://docs.YOURCOMPANYMAME.com/docs/dashboard.action?os_username=configipedia_service_account&os_password=PASSWORD' session = requests.session() session.post(confluence_auth_url)
This will execute and save the session in memory, so you will not need to authorise each next request.
REST URL composing:
Then you compose the needed URL like it shown here: http://www.trianglesis.org.ua/atlassian-confluence-rest-api-logic-structure-eng
# Usual URLS space_url = confPedia_root+conf_content+space_page space_child_items = confPedia_root+conf_content+space_root_page+conf_children space_post = confPedia_root+conf_content
This will be useful to create this (in KB):
Create content POST /rest/api/content Get content GET /rest/api/content Update PUT /rest/api/content/{contentId} Get content by id GET /rest/api/content/{id} Delete DELETE /rest/api/content/{id}
Session execute:
When you have all needed arguments and space id and parent-child pages of Atlassian Confluence, you can simply add them as like it shown in example above and execute:
In this example you pick up the session stored in memory and just send any needed URL request, then json decode the answer and shows the result. You can do it as many times as you need, the session is open and ready to get and post.
Sometimes its better, than send credentials each time when you GET\POST something.
# GET HOMESPACE # request 1 r_homepage = session.get(space_url) r_homepage = r_homepage.json() # Check current location: r_homepage_loc = r_homepage['_links']['webui'] print("You are here now: "+confPedia_root+r_homepage_loc) # GET CHILDREN ITEMS # request 2 r_home_children = session.get(space_child_items) r_home_children = r_home_children.json() # Check current location r_home_children_loc = r_home_children['_links']['self'] print("You are looking through this branch: "+r_home_children_loc) # Getting results from "request 2" r_home_children_results = r_home_children['results'] product_pages_list = [] for item in r_home_children_results: id = item['id'] title = item['title'] web_link = item['_links']['webui'] post_link = item['_links']['self'] # product_page = {'id':id, 'title':title, 'web_link':web_link, 'post_link':post_link} product_page = {'id':id, 'title':title, 'web':confPedia_root+web_link, 'post':post_link} product_pages_list.append(product_page) print(product_page)
This example will show all spaces for current user in Atlassian Confluence, then show all pages on it, and all child items with theirs id, title, web link etc.