7e900f281a50290af99f82dc55baf794d7ffcc51
[jFCPlib.git] / src / main / java / net / pterodactylus / fcp / quelaton / ClientPutCommand.java
1 package net.pterodactylus.fcp.quelaton;
2
3 import java.io.File;
4 import java.io.InputStream;
5 import java.util.Optional;
6 import java.util.function.Consumer;
7
8 import net.pterodactylus.fcp.Key;
9
10 /**
11  * FCP command that inserts data into Freenet.
12  *
13  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
14  */
15 public interface ClientPutCommand {
16
17         ClientPutCommand onKeyGenerated(Consumer<String> keyGenerated);
18         ClientPutCommand named(String targetFilename);
19         WithUri redirectTo(String uri);
20         WithUri from(File file);
21         WithLength from(InputStream inputStream);
22
23         interface WithLength {
24
25                 WithUri length(long length);
26
27         }
28
29         interface WithUri {
30
31                 Executable<Optional<Key>> uri(String uri);
32
33         }
34
35 }