refresh reddit token hourly

This commit is contained in:
rexy712 2019-03-25 17:11:40 -07:00
parent 908260cfe8
commit 2c64d8f16d
5 changed files with 18 additions and 1 deletions

1
TODO
View File

@ -16,3 +16,4 @@ matrix:
reddit: reddit:
handle imgur albums handle imgur albums
handle youtube links handle youtube links
convert ampersands from 'amp&;' to '&'

View File

@ -128,6 +128,7 @@ namespace reddit{
void set_useragent(const raii::string_base&); void set_useragent(const raii::string_base&);
void set_useragent(raii::string_base&&); void set_useragent(raii::string_base&&);
void refresh_token(const auth_data& a);
post get_new_post(const raii::string_base& subreddit); post get_new_post(const raii::string_base& subreddit);
post get_new_post(const raii::string_base& subreddit, const raii::string_base& after); post get_new_post(const raii::string_base& subreddit, const raii::string_base& after);

View File

@ -97,7 +97,11 @@ namespace raii{
return curl_string(tmp, strlen(tmp)); return curl_string(tmp, strlen(tmp));
} }
curl_string curler::decode(const char* data, int* outlen, int len){ curl_string curler::decode(const char* data, int* outlen, int len){
if(outlen)
return curl_string(curl_easy_unescape(m_curl, data, len, outlen), *outlen); return curl_string(curl_easy_unescape(m_curl, data, len, outlen), *outlen);
int out;
char* tmp = curl_easy_unescape(m_curl, data, len, &out);
return curl_string(tmp, out);
} }
CURL* curler::get(void){ CURL* curler::get(void){

View File

@ -380,6 +380,10 @@ namespace reddit{
m_useragent = std::move(s); m_useragent = std::move(s);
} }
void bot::refresh_token(const auth_data& a){
m_access_token = _acquire_access_token(a);
}
post bot::get_new_post(const raii::string_base& subreddit){ post bot::get_new_post(const raii::string_base& subreddit){
return _get_post(subreddit, "new"_ss, "limit=1"_ss); return _get_post(subreddit, "new"_ss, "limit=1"_ss);
} }

View File

@ -20,6 +20,7 @@
#include <rjp.h> #include <rjp.h>
#include <utility> //move #include <utility> //move
#include <tuple> #include <tuple>
#include <chrono>
#define DBG_LEVEL_NONE 0 #define DBG_LEVEL_NONE 0
#define DBG_LEVEL_NORMAL 2 #define DBG_LEVEL_NORMAL 2
@ -362,6 +363,8 @@ int main(){
DEBUG_PRINT("matrix bot initialized\n"); DEBUG_PRINT("matrix bot initialized\n");
auto sync_reply = matbot.sync(0); //initial sync auto sync_reply = matbot.sync(0); //initial sync
raii::string subreddit = "ProgrammerHumor"; raii::string subreddit = "ProgrammerHumor";
auto start_time = std::chrono::system_clock::now();
bool should_quit = false; bool should_quit = false;
auto sync_callback = [&](const matrix::bot& bot, const matrix::msg_info& msg)->void auto sync_callback = [&](const matrix::bot& bot, const matrix::msg_info& msg)->void
@ -381,6 +384,10 @@ int main(){
bot.send_message(msg.roomid, raii::string("Current subreddit is \"" + subreddit + "\"")); bot.send_message(msg.roomid, raii::string("Current subreddit is \"" + subreddit + "\""));
}else if(!strncmp(msg.body.get(), "!post ", 6)){ }else if(!strncmp(msg.body.get(), "!post ", 6)){
if(msg.body.length() > 6){ if(msg.body.length() > 6){
auto cur_time = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed = cur_time-start_time;
if(elapsed.count() >= 3600)
redditbot.refresh_token(reddit_auth);
if(!strcmp(msg.body.get()+6, "hour")){ if(!strcmp(msg.body.get()+6, "hour")){
do_reddit_post(redditbot,bot,msg.roomid, subreddit, reddit::time::hour); do_reddit_post(redditbot,bot,msg.roomid, subreddit, reddit::time::hour);
}else if(!strcmp(msg.body.get()+6, "day")){ }else if(!strcmp(msg.body.get()+6, "day")){