diff --git a/main.py b/main.py index 9094c391d7f7e441781c81da60037666905e89c6..2a1d4f2ae5e2746378ae2ad744d8ee5b4b55af34 100644 --- a/main.py +++ b/main.py @@ -13,7 +13,7 @@ class RestApp(App): def load_locations(self): self.root.ids.results.clear_widgets() - self.openmrs_connection.send_request('location', None, self.on_locations_loaded, + self.openmrs_connection.send_request('location', None, None, self.on_locations_loaded, self.on_locations_not_loaded, self.on_locations_not_loaded) def on_locations_loaded(self, _, response): diff --git a/openmrs.py b/openmrs.py index cceb404c83e9eb0031a0a351644ea6a870d870a7..6cc768aed47945f16090b20b96ffcc7c0a146fb8 100644 --- a/openmrs.py +++ b/openmrs.py @@ -8,11 +8,7 @@ except ImportError: from urllib.parse import quote -class RESTConnection(object): - @staticmethod - def _construct_url(authority, port, resource): - return f'http://{authority}:{port}/openmrs/ws/rest/v1/{resource}' - +class RESTConnection: def __init__(self, authority, port, username, password): self.authority = authority self.port = port @@ -23,8 +19,16 @@ class RESTConnection(object): 'Content-type': 'application/json', } - def send_request(self, resource, post_parameters, on_success, on_failure, on_error): - url = RESTConnection._construct_url(self.authority, self.port, resource) - post_parameters = json.dumps(post_parameters) if post_parameters is not None else None - UrlRequest(url, req_headers=self.headers, req_body=post_parameters, + 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)