Skip to content
Snippets Groups Projects
Select Git revision
  • 02f15b6734bc23c011efe2ef2aefa34fb00d154f
  • master default protected
2 results

openmrs.py

Blame
  • openmrs.py 1.46 KiB
    from kivy.network.urlrequest import UrlRequest
    
    import base64
    import json
    try:
        from urllib import quote
    except ImportError:
        from urllib.parse import quote
    
    
    class RESTConnection:
        def __init__(self, authority, port, username, password):
            self.authority = authority
            self.port = port
            credentials = f'{username}:{password}'
            credentials = base64.standard_b64encode(credentials.encode('UTF8')).decode('UTF8')
            self.headers = {
                'Authorization': f'Basic {credentials}',
                'Content-type': 'application/json',
            }
    
        def construct_url(self, resource, get_parameters=None):
            get_parameters = '&'.join(f'{quote(str(key))}={quote(str(value))}' for key, value in get_parameters.items()) \
                if get_parameters is not None else ''
            return f'http://{self.authority}:{self.port}/openmrs/ws/rest/v1/{resource}?{get_parameters}'
    
        def send_request_by_url(self, url, post_parameters, on_success, on_failure, on_error):
            UrlRequest(url, req_headers=self.headers,
                       req_body=json.dumps(post_parameters) if post_parameters is not None else None,
                       on_success=on_success, on_failure=on_failure, on_error=on_error)
    
        def send_request(self, resource, get_parameters, post_parameters, on_success, on_failure, on_error):
            url = self.construct_url(resource, get_parameters)
            self.send_request_by_url(url, post_parameters, on_success, on_failure, on_error)