def api(ctx, username, password, apikey, add, unwatched, rename, files, keep_structure, date_format, delete_empty, link, softlink, persistent, abort, state): if (not add and not rename): ctx.obj["output"].info("Nothing to do.") return try: conn = get_connector(apikey, username, password, persistent) except Exception as e: raise e ctx.obj["output"].error(e) exit(1) pipeline = [] pipeline.append(operations.HashOperation(ctx.obj["output"])) if add: pipeline.append( operations.MylistAddOperation(conn, ctx.obj["output"], state, unwatched)) if rename: pipeline.append( operations.GetFileInfoOperation(conn, ctx.obj["output"])) pipeline.append( operations.RenameOperation(ctx.obj["output"], rename, date_format, delete_empty, keep_structure, softlink, link, abort)) to_process = get_files_to_process(files, ctx) for file in to_process: file_obj = {} file_obj["path"] = file ctx.obj["output"].info("Processing file \"" + file + "\"") for operation in pipeline: res = operation.Process(file_obj) if not res: # Critical error, cannot proceed with pipeline break conn.close(persistent, get_persistent_file_path())
def test_add_ok(): conn = flexmock.flexmock(send_request=lambda x: {"code": 210, "data": "MYLIST ENTRY ADDED"}) conn.should_call("send_request").once().with_args("MYLISTADD size=42&ed2k=ABC1234&viewed=1&state=0") out = flexmock.flexmock() out.should_receive("success").once() oper = operations.MylistAddOperation(conn, out, 0, False) f = {"size": 42, "ed2k": "ABC1234"} oper.Process(f)
def test_add_send_exception(): conn = flexmock.flexmock() conn.should_receive("send_request").once().with_args("MYLISTADD size=42&ed2k=ABC1234&viewed=1&state=0").and_raise(Exception) out = flexmock.flexmock() out.should_receive("error").once() oper = operations.MylistAddOperation(conn, out, 0, False) f = {"size": 42, "ed2k": "ABC1234"} oper.Process(f)
def test_add_already_in_mylist(): conn = flexmock.flexmock(send_request=already_send_request) conn.should_call("send_request").with_args("MYLISTADD size=42&ed2k=ABC1234&viewed=1&state=0").and_return({"code": 310, "data": "ALREADY IN MYLIST"}).once().ordered() conn.should_call("send_request").with_args("MYLISTADD size=42&ed2k=ABC1234&edit=1&viewed=1&state=0").and_return({"code": 311, "data": "MYLIST ENTRY EDITED"}).once().ordered() out = flexmock.flexmock(error=lambda x: print(x)) out.should_receive("warning").once() out.should_receive("error") oper = operations.MylistAddOperation(conn, out, 0, False) f = {"size": 42, "ed2k": "ABC1234"} oper.Process(f)
def test_add_already_in_mylist(): conn = flexmock.flexmock(send_request=lambda x: { "code": 310, "data": "ALREADY IN MYLIST" }) conn.should_call("send_request").once().with_args( "MYLISTADD size=42&ed2k=ABC1234&viewed=1") out = flexmock.flexmock() out.should_receive("warning").once() oper = operations.MylistAddOperation(conn, out) f = {"size": 42, "ed2k": "ABC1234"} oper.Process(f)
def api(ctx, username, password, apikey, add, rename, files, keep_structure, date_format, delete_empty, link, softlink): if (not add and not rename): ctx.obj["output"].info("Nothing to do.") return try: if apikey: conn = anidbconnector.AnidbConnector.create_secure( username, password, apikey) else: conn = anidbconnector.AnidbConnector.create_plain( username, password) except Exception as e: ctx.obj["output"].error(e) exit(1) pipeline = [] pipeline.append(operations.HashOperation(ctx.obj["output"])) if add: pipeline.append(operations.MylistAddOperation(conn, ctx.obj["output"])) if rename: pipeline.append( operations.GetFileInfoOperation(conn, ctx.obj["output"])) pipeline.append( operations.RenameOperation(ctx.obj["output"], rename, date_format, delete_empty, keep_structure, softlink, link)) to_process = get_files_to_process(files, ctx) for file in to_process: file_obj = {} file_obj["path"] = file ctx.obj["output"].info("Processing file \"" + file + "\"") for operation in pipeline: res = operation.Process(file_obj) if not res: # Critical error, cannot proceed with pipeline break conn.close()