added telegram api support to send message on ip update

This commit is contained in:
2019-05-08 19:19:42 +02:00
parent 3b7e78193a
commit 846a32ee7e
7 changed files with 162 additions and 65 deletions

83
src/api/API.cpp Normal file
View File

@ -0,0 +1,83 @@
//
// Created by lukas on 06.04.19.
//
#include "API.h"
#include "../Hashmap.h"
#include <string>
#include <iostream>
#include <sstream>
#include <curl/curl.h>
std::string API::request(std::string myurl) {
Hashmap<std::string,std::string> map;
std::vector<std::string> str;
return request(std::move(myurl),false,map,str);
}
std::string API::request(std::string myurl, bool post, Hashmap<std::string,std::string> &map, std::vector<std::string> &headers) {
CURL *curl;
CURLcode res;
curl = curl_easy_init();
struct curl_slist *list = nullptr;
for (int j = 0; j < headers.size(); ++j) {
list = curl_slist_append(list, headers.at(j).c_str());
}
std::string readString;
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, myurl.c_str());
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
//ssl verification
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
if(post){
std::stringstream poststring;
poststring << "{";
for (int i = 0; i < map.size(); i++) {
poststring << "\""+map.getKey(i) << "\": \""+map.getValue(i) << "\"";
if(i < map.size()-1){
poststring << ", ";
}
}
poststring << "}";
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, poststring.str().c_str());
}else{
std::string getstring;
for(int i =0; i< map.size();i++){
getstring+=map.getKey(i)+"="+map.getValue(i);
if(i < map.size()-1){
getstring+="&";
}
}
myurl+="?"+getstring;
}
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readString);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
return readString;
}
size_t API::write_data(void *contents, size_t size, size_t nmemb, FILE *stream) {
((std::string*)stream)->append((char*)contents, size * nmemb);
return size * nmemb;
}

22
src/api/API.h Normal file
View File

@ -0,0 +1,22 @@
//
// Created by lukas on 06.04.19.
//
#ifndef IPREFRESHER_API_H
#define IPREFRESHER_API_H
#include <string>
#include "../Hashmap.h"
class API {
public:
std::string request(std::string myurl);
std::string request(std::string myurl, bool post, Hashmap<std::string,std::string> &map,std::vector<std::string> &headers);
private:
static size_t write_data(void *buffer, size_t size, size_t buffersize, FILE *stream);
};
#endif //IPREFRESHER_API_H

10
src/api/TelegramAPI.cpp Normal file
View File

@ -0,0 +1,10 @@
//
// Created by lukas on 08.05.19.
//
#include "TelegramAPI.h"
void TelegramAPI::sendMessage(std::string text) {
std::string reply = request("https://api.telegram.org/bot"+ apikey + "/sendmessage?chat_id="+chatid+"&text="+text);
std::cout << "[DEBUG] " <<reply << std::endl;
}

22
src/api/TelegramAPI.h Normal file
View File

@ -0,0 +1,22 @@
//
// Created by lukas on 08.05.19.
//
#ifndef IPREFRESHER_TELEGRAMAPI_H
#define IPREFRESHER_TELEGRAMAPI_H
#include <string>
#include "API.h"
class TelegramAPI : API{
public:
void sendMessage(std::string text);
private:
std::string apikey = "717213769:AAHan1nSXhUsxLJAN1Dv8Oc0z8wqwDdYPn4";
std::string chatid = "618154204";
};
#endif //IPREFRESHER_TELEGRAMAPI_H