#// Copyright (c) 2000-2017 Ericsson Telecom AB                                                         //
#// All rights reserved. This program and the accompanying materials are made available under the terms //
#// of the Eclipse Public License v1.0 which accompanies this distribution, and is available at         //
#// http://www.eclipse.org/legal/epl-v10.html                                                           //
#/////////////////////////////////////////////////////////////////////////////////////////////////////////
'''
DataSource is a handler that can be used as a hub for other handlers that provide a DsRestAPI interface.
It makes it possible to handle DsRestAPI requests that need no be handled be multiple microservices.
'''

from DataSource import DataSource

EXTENSION = 'api.appagent'

def createHandler(directory, *args):
    return DataSource(directory)