Skip to content

Commit

Permalink
add metadata sync/clear commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Herringway committed Feb 22, 2019
1 parent 781a122 commit 4cf5395
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions source/virc/client.d
Expand Up @@ -719,6 +719,24 @@ struct IRCClient(alias mix, T) if (isOutputRange!(T, char)) {
public void listSubscribedMetadata() {
write!"METADATA * SUBS"();
}
public void syncMetadata(const User user) {
write!"METADATA %s SYNC"(user);
}
public void syncMetadata(const Channel channel) {
write!"METADATA %s SYNC"(channel);
}
public void syncMetadata() {
write!"METADATA * SYNC"();
}
public void clearMetadata(const User user) {
write!"METADATA %s CLEAR"(user);
}
public void clearMetadata(const Channel channel) {
write!"METADATA %s CLEAR"(channel);
}
public void clearMetadata() {
write!"METADATA * CLEAR"();
}
private void sendAuthenticatePayload(const string payload) {
import std.base64 : Base64;
import std.range : chunks;
Expand Down Expand Up @@ -3064,5 +3082,20 @@ version(unittest) {
client.put(":irc.example.com 762 modernclient :end of metadata");
assert(errors.length == 10);
assert(errors[9].type == ErrorType.noPrivs);

client.syncMetadata();
assert(client.output.data.lineSplitter().array[$-1] == "METADATA * SYNC");
client.clearMetadata();
assert(client.output.data.lineSplitter().array[$-1] == "METADATA * CLEAR");

client.syncMetadata(Channel("#test"));
assert(client.output.data.lineSplitter().array[$-1] == "METADATA #test SYNC");
client.clearMetadata(Channel("#test"));
assert(client.output.data.lineSplitter().array[$-1] == "METADATA #test CLEAR");

client.syncMetadata(User("test"));
assert(client.output.data.lineSplitter().array[$-1] == "METADATA test SYNC");
client.clearMetadata(User("test"));
assert(client.output.data.lineSplitter().array[$-1] == "METADATA test CLEAR");
}
}

0 comments on commit 4cf5395

Please sign in to comment.