# Path: gap/utils/imports.py
# def import_class(class_name):
#     """
#     imports and returns class by its path
# 
#     USAGE:
#         myclass = import_class('StringIO.StringIO')
#         # or
#         from StringIO import StringIO
#         myclass = import_class(StringIO)
#     """
#     if isinstance(class_name, StringTypes):
#         from importlib import import_module
#         module_name, class_name = class_name.rsplit('.', 1)
#         module = import_module(module_name)
#         return getattr(module, class_name)
#     else:
#         return class_name


from types import StringTypes
from webapp2_extras.routes import PathPrefixRoute
from webapp2 import Router
from gap.utils.imports import import_class
import webapp2
        import config
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# @author Robin Gottfried <google@kebet.cz>
# part of gap project (https://github.com/czervenka/gap)




def include(prefix, routes):
    if isinstance(routes, StringTypes):
        routes = import_class('%s.routes' % routes)
    elif hasattr(routes, 'routes'):
        routes = routes.routes

    routes = [ Router.route_class(*route) if isinstance(route, tuple) else route for route in routes ]

    return PathPrefixRoute(prefix, routes)


class BaseRouter(webapp2.Router):

    def _get_filters(self):

# Path: gap/utils/imports.py
# def import_class(class_name):
#     """
#     imports and returns class by its path
# 
#     USAGE:
#         myclass = import_class('StringIO.StringIO')
#         # or
#         from StringIO import StringIO
#         myclass = import_class(StringIO)
#     """
#     if isinstance(class_name, StringTypes):
#         from importlib import import_module
#         module_name, class_name = class_name.rsplit('.', 1)
#         module = import_module(module_name)
#         return getattr(module, class_name)
#     else:
#         return class_name


# Path: gap/utils/routes.py
from types import StringTypes
from webapp2_extras.routes import PathPrefixRoute
from webapp2 import Router
from gap.utils.imports import import_class
import webapp2
        import config

# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# @author Robin Gottfried <google@kebet.cz>
# part of gap project (https://github.com/czervenka/gap)




def include(prefix, routes):
    if isinstance(routes, StringTypes):
        routes = import_class('%s.routes' % routes)
    elif hasattr(routes, 'routes'):
        routes = routes.routes

    routes = [ Router.route_class(*route) if isinstance(route, tuple) else route for route in routes ]

    return PathPrefixRoute(prefix, routes)


class BaseRouter(webapp2.Router):

    def _get_filters(self):

        return [import_class(f) for f in getattr(config, 'REQUEST_FILTERS', [])]  # copy