Source code for fhirpath.connectors
# _*_ coding: utf-8 _*_
from zope.interface import Invalid
from fhirpath.utils import import_string, reraise
from .url import _parse_rfc1738_args
__author__ = "Md Nazrul Islam<email2nazrul@gmail.com>"
[docs]def make_url(connection_str):
""" """
return _parse_rfc1738_args(connection_str)
[docs]def create_connection(conn_string, klass=None, **extra):
""" """
mod_pattern = "fhirpath.connectors.factory.{driver_mod}.create"
if isinstance(conn_string, (tuple, list)):
url = [make_url(conn) for conn in conn_string]
url_ = url[0]
else:
url_ = url = make_url(conn_string)
driver_mod = url_.drivername.split("+")[0]
try:
factory = import_string(mod_pattern.format(driver_mod=driver_mod))
return factory(url, klass, **extra)
except ImportError:
reraise(
Invalid,
"Invalid ({0}) drivername or not supported yet!.".format(url_.drivername),
)