Esempio n. 1
0
def __handleInternalRequest(pathNouns, _path, **kwargs):
    #
    # Handle a request internally
    #
    if len(pathNouns) > 1:
        if pathNouns[1] == "resources":
            if len(pathNouns) == 3:
                ext = pathNouns[2][pathNouns[2].rfind("."):]
                PMS.Log("(Framework) Getting resource named '%s'" %
                        pathNouns[2])
                resource = Resource.Load(pathNouns[2])
                return Objects.DataObject(resource,
                                          Resource.MimeTypeForExtension(ext))

        if pathNouns[1] == "sharedresources":
            if len(pathNouns) == 3:
                ext = pathNouns[2][pathNouns[2].rfind("."):]
                PMS.Log("(Framework) Getting shared resource named '%s'" %
                        pathNouns[2])
                resource = Resource.LoadShared(pathNouns[2])
                return Objects.DataObject(resource,
                                          Resource.MimeTypeForExtension(ext))

        elif pathNouns[1] == "function" and len(pathNouns) >= 3:
            name = pathNouns[2]
            pos = name.rfind(".")
            if pos > -1:
                name = name[:pos]
            PMS.Log(name)
            if name not in __reservedFunctionNames:
                if len(pathNouns) == 4:
                    kwargs['query'] = pathNouns[3]

                result = __callNamed(name, **kwargs)
                #PMS.Log(result)
                return result

        elif pathNouns[1] == "prefs":
            if len(pathNouns) == 2:
                return Prefs.__container()
            else:
                Prefs.__setAll(kwargs)
                result = __callNamed("ValidatePrefs", addToLog=False)
                if result:
                    return result
                else:
                    return ''