-module(ftpasta_ffi). -import(ftpasta_ffi_helpers, [str_to_charlist/1, charlist_to_str/1, normalise/1, normalise_charlist/1]). -export([ append/3, append_bin/3, cd/2, close/1, delete/2, formaterror/1, lcd/2, lpwd/1, ls/2, mkdir/2, nlist/2, open/3, pwd/1, recv/3, recv_bin/2, rename/3, rmdir/2, send/3, send_bin/3, user/3 ]). append(Pid, LocalFileName, RemoteFileName) -> normalise(ftp:append(Pid, str_to_charlist(LocalFileName), str_to_charlist(RemoteFileName))). append_bin(Pid, Bin, RemoteFileName) -> normalise(ftp:append_bin(Pid, Bin, str_to_charlist(RemoteFileName))). cd(Pid, Dir) -> normalise(ftp:cd(Pid, str_to_charlist(Dir))). close(Pid) -> ftp:close(Pid), nil. delete(Pid, File) -> normalise(ftp:delete(Pid, str_to_charlist(File))). formaterror(Reason) -> charlist_to_str(ftp:formaterror({error, Reason})). lcd(Pid, Dir) -> normalise(ftp:lcd(Pid, str_to_charlist(Dir))). lpwd(Pid) -> {_, Dir} = ftp:lpwd(Pid), charlist_to_str(Dir). ls(Pid, Dir) -> normalise_charlist(ftp:ls(Pid, str_to_charlist(Dir))). mkdir(Pid, Dir) -> normalise(ftp:mkdir(Pid, str_to_charlist(Dir))). nlist(Pid, Dir) -> normalise_charlist(ftp:nlist(Pid, str_to_charlist(Dir))). ftp_config(Port, explicit) -> [ {port, Port}, {tls, [ {session_tickets, auto} ]}, {tls_sec_method, ftpes}, {tls_ctrl_session_reuse, true} ]; ftp_config(Port, implicit) -> [ {port, Port}, {tls, [ {session_tickets, auto} ]}, {tls_sec_method, ftps}, {tls_ctrl_session_reuse, true} ]; ftp_config(Port, plaintext) -> [{port, Port}]. open(Host, Port, TLS) -> ftp:open(str_to_charlist(Host), ftp_config(Port, TLS)). pwd(Pid) -> normalise_charlist(ftp:pwd(Pid)). recv(Pid, RemoteFileName, LocalFileName) -> normalise(ftp:recv(Pid, str_to_charlist(RemoteFileName), str_to_charlist(LocalFileName))). recv_bin(Pid, RemoteFileName) -> ftp:recv_bin(Pid, str_to_charlist(RemoteFileName)). rename(Pid, Old, New) -> normalise(ftp:rename(Pid, str_to_charlist(Old), str_to_charlist(New))). rmdir(Pid, Dir) -> normalise(ftp:rmdir(Pid, str_to_charlist(Dir))). send(Pid, LocalFileName, RemoteFileName) -> normalise(ftp:send(Pid, str_to_charlist(LocalFileName), str_to_charlist(RemoteFileName))). send_bin(Pid, Bin, RemoteFileName) -> normalise(ftp:send_bin(Pid, Bin, str_to_charlist(RemoteFileName))). user(Pid, User, Pass) -> normalise(ftp:user(Pid, str_to_charlist(User), str_to_charlist(Pass))).