예제 #1
0
def do_fallback(fallback_servers, base_path, path_info):
    _, ext = os.path.splitext(path_info)
    path_info = path_info.lstrip("/")
    path_info, action_tuples = parse_action_tuples(path_info)
    path_info = path_info + ext

    if ".." in path_info:
        return (False, "bad path")

    fallback_url = match_fallback(fallback_servers, path_info)

    if not fallback_url:
        return (False, "no matching fallback")

    output_file = os.path.join(base_path, path_info)

    if not os.path.lexists(output_file):
        o = urllib.URLopener()
        try:
            (tmpfn, httpmsg) = o.retrieve(fallback_url)

            makedirs(os.path.dirname(output_file))
            shutil.move(tmpfn, output_file)
            return (True, tmpfn)
        except IOError, e:
            return (False, (e, (fallback_url, output_file)))
예제 #2
0
    def test(self):
        self.assertEqual(
            ("c05-v2-final-orioles-12-x-large", []),
            utils.parse_action_tuples("c05-v2-final-orioles-12-x-large")
        )

        self.assertEqual(
            ("c05-v2-final-orioles-12-x-large", [("r", "100x100")]),
            utils.parse_action_tuples(
                "c05-v2-final-orioles-12-x-large_r100x100"
            )
        )

        self.assertEqual(
            ("final-orioles-12-x-large", [("r", "100x100")]),
            utils.parse_action_tuples("final-orioles-12-x-large_r100x100")
        )

        self.assertEqual(
            ("foo_bar", []),
            utils.parse_action_tuples("foo_bar")
        )

        self.assertEqual(
            ("foo_bar", [("r", "100")]),
            utils.parse_action_tuples("foo_bar_r100")
        )

        self.assertEqual(
            ("c1088", []),
            utils.parse_action_tuples("c1088")
        )

        self.assertEqual(
            ("c1088-1_1", []),
            utils.parse_action_tuples("c1088-1_1")
        )


        self.assertEqual(
            ("c1088", [("c", "0-0-100-100")]),
            utils.parse_action_tuples("c1088_c0-0-100-100")
        )