matrix_thing/util/matrix-send.cpp
2019-09-02 14:39:55 -07:00

65 lines
1.9 KiB
C++

/**
This file is a part of rexy's matrix client
Copyright (C) 2019 rexy712
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "matrix/matrix.hpp"
#include "raii/static_string.hpp"
#include <cstdlib> //exit
#include <vector>
#include <cstring>
#include <cstdio>
[[noreturn]] void usage(int status){
printf("Usage: matrix-send STRING\n");
printf("\tSends message to designated room as the designated user\n");
exit(status);
}
void do_stdin(const matrix::roomcxn& room){
std::vector<char> data;
data.reserve(256);
for(int in;(in = fgetc(stdin)) != EOF;){
data.push_back(in);
}
data.push_back(0);
room.send_message(raii::static_string(data.data()));
}
int main(int argc, char** argv){
const char* username = "username";
const char* password = "password";
const char* useragent = "rexy712s test bot";
const char* homeserver = "matrix.org";
const char* roomid = "!room:matrix.org";
matrix::auth_data auth{username, password, homeserver, useragent};
matrix::session ses(auth);
if(!ses.valid()){
fprintf(stderr, "Failed to init matrix session!\n");
return 1;
}
auto client = ses.spawn_client();
auto room = client.spawn_room(raii::static_string(roomid));
if(argc < 2 || !strcmp(argv[1], "-")){
do_stdin(room);
}else{
room.send_message(raii::static_string(argv[1]));
}
}