mirror of
https://github.com/yawaflua/SpCloudCore.git
synced 2025-12-09 20:19:35 +02:00
Introduce register rest methosd
This commit is contained in:
@@ -1,12 +1,90 @@
|
|||||||
// ReSharper disable CppClangTidyBugproneSuspiciousInclude
|
// ReSharper disable CppClangTidyBugproneSuspiciousInclude
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include "../httplib.h"
|
||||||
|
#include <future>
|
||||||
|
|
||||||
class DiscordService
|
class DiscordService
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
httplib::Client client_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DiscordService()
|
DiscordService() : client_(httplib::Client("https://discord.com/api"))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string get_discord_id(std::string auth_code)
|
||||||
|
{
|
||||||
|
std::string auth_code_processed = extract_code(auth_code);
|
||||||
|
|
||||||
|
//std::string body = "client_id=1273414933874479185&"
|
||||||
|
// "client_secret=S_vG4frjlxWoi8mic_GlcxUO0aWxXwRJ&"
|
||||||
|
// "grant_type=authorization_code&"
|
||||||
|
// "code=" + auth_code_processed + "&"
|
||||||
|
// "redirect_uri=https://www.sp-donate.ru/pay/Hepatir";
|
||||||
|
|
||||||
|
//httplib::Headers headers = {
|
||||||
|
// {"Content-Type", "application/x-www-form-urlencoded"}
|
||||||
|
//};
|
||||||
|
|
||||||
|
//httplib::Client client("discord.com/api");
|
||||||
|
////// Выполняем простой GET-запрос на http://httpbin.org/get
|
||||||
|
////auto res = client.Get("/get");
|
||||||
|
//auto res = client.Post("/oauth2/token", headers, body, "application/x-www-form-urlencoded");
|
||||||
|
////auto res = client_.Post("/oauth2/token", headers, body, "application/x-www-form-urlencoded");
|
||||||
|
|
||||||
|
//if (res && res->status == 200) {
|
||||||
|
// return res->body;
|
||||||
|
//}
|
||||||
|
//else {
|
||||||
|
// return "Error: ";//Todo write handling this
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
std::string command = "curl --location https://discord.com/api/oauth2/token "
|
||||||
|
"--header \"Content-Type: application/x-www-form-urlencoded\" "
|
||||||
|
"--data-urlencode \"client_id=1273414933874479185\" "
|
||||||
|
"--data-urlencode \"client_secret=S_vG4frjIxWoi8mic_GlcxUO0aWxXwRJ\" "
|
||||||
|
"--data-urlencode \"grant_type=authorization_code\" "
|
||||||
|
"--data-urlencode \"code=" + auth_code_processed + "\" "
|
||||||
|
"--data-urlencode \"redirect_uri=https://www.sp-donate.ru/pay/Hepatir\"";
|
||||||
|
|
||||||
|
auto future = std::async(std::launch::async, &DiscordService::execute_command, this, command);
|
||||||
|
return future.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string execute_command(const std::string& command) {
|
||||||
|
std::array<char, 128> buffer;
|
||||||
|
std::string result;
|
||||||
|
std::shared_ptr<FILE> pipe(popen(command.c_str(), "r"), pclose);
|
||||||
|
if (!pipe) throw std::runtime_error("popen() failed!");
|
||||||
|
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
|
||||||
|
result += buffer.data();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string extract_code(const std::string& json_str) {
|
||||||
|
std::string key = "\"code\":";
|
||||||
|
size_t start = json_str.find(key);
|
||||||
|
|
||||||
|
if (start != std::string::npos) {
|
||||||
|
start += key.length();
|
||||||
|
// Пропускаем любые пробелы или символы ':'
|
||||||
|
while (start < json_str.length() && (json_str[start] == ' ' || json_str[start] == '\"' || json_str[start] == ':')) {
|
||||||
|
start++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Найти конец строки
|
||||||
|
size_t end = json_str.find('\"', start);
|
||||||
|
if (end != std::string::npos) {
|
||||||
|
return json_str.substr(start, end - start);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
//// ReSharper disable CppClangTidyBugproneSuspiciousInclude
|
// ReSharper disable CppClangTidyBugproneSuspiciousInclude
|
||||||
//
|
//#include <curl/curl.h>/*
|
||||||
//#include <bsoncxx/json.hpp>
|
#include <iostream>
|
||||||
//#include <mongocxx/client.hpp>
|
|
||||||
//#include <mongocxx/instance.hpp>
|
//#include "../src/mongocxx/"s
|
||||||
|
|
||||||
class MongoDbService
|
class MongoDbService
|
||||||
{
|
{
|
||||||
@@ -10,7 +10,18 @@ class MongoDbService
|
|||||||
public:
|
public:
|
||||||
MongoDbService()
|
MongoDbService()
|
||||||
{
|
{
|
||||||
|
//mongocxx::instance inst{};
|
||||||
|
//const auto uri = mongocxx::uri{ "mongodb+srv://loker:<password>@spcloudcluster.xwpnw.mongodb.net/?retryWrites=true&w=majority&appName=SpCloudCluster" };
|
||||||
|
//// Set the version of the Stable API on the client
|
||||||
|
//mongocxx::options::client client_options;
|
||||||
|
//const auto api = mongocxx::options::server_api{ mongocxx::options::server_api::version::k_version_1 };
|
||||||
|
//client_options.server_api_opts(api);
|
||||||
|
//// Setup the connection and get a handle on the "admin" database.
|
||||||
|
//mongocxx::client conn{ uri, client_options };
|
||||||
|
//mongocxx::database db = conn["admin"];
|
||||||
|
//// Ping the database.
|
||||||
|
//const auto ping_cmd = bsoncxx::builder::basic::make_document(bsoncxx::builder::basic::kvp("ping", 1));
|
||||||
|
//db.run_command(ping_cmd.view());
|
||||||
|
//std::cout << "Pinged your deployment. You successfully connected to MongoDB!" << std::endl;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
#include "SpCloudMain.h"
|
#include "SpCloudMain.h"
|
||||||
#include "httplib.h"
|
#include "httplib.h"
|
||||||
#include "Controllers/PublishController.cpp"
|
#include "Controllers/PublishController.cpp"
|
||||||
|
#include "Service/DiscordService.cpp"
|
||||||
|
|
||||||
//#include "Service/AuthorizationService.cpp"
|
//#include "Service/AuthorizationService.cpp"
|
||||||
//#include "Service/FileProcessingService.cpp"
|
//#include "Service/FileProcessingService.cpp"
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@@ -50,5 +52,43 @@ int main()
|
|||||||
res.set_content("App is running on address ????", "text/plain");//Todo add app address showing
|
res.set_content("App is running on address ????", "text/plain");//Todo add app address showing
|
||||||
});
|
});
|
||||||
|
|
||||||
|
DiscordService discord_service;
|
||||||
|
|
||||||
|
svr.Post("/register", [&](const httplib::Request& req, httplib::Response& res)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
string discord_id = discord_service.get_discord_id(req.body);
|
||||||
|
|
||||||
|
res.set_content(discord_id, "text/plain");
|
||||||
|
|
||||||
|
/*logger.log(INFO, "Start publish from main");
|
||||||
|
|
||||||
|
publish_controller.process_publish(req, res);*/
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/*httplib::Client cli("https://discord.com/api/oauth2/token");
|
||||||
|
|
||||||
|
std::string jsonData = R"({
|
||||||
|
"dataSource": "Cluster0",
|
||||||
|
"database": "myDatabase",
|
||||||
|
"collection": "items",
|
||||||
|
"document": {
|
||||||
|
"name": "Item Name",
|
||||||
|
"value": "Item Value"
|
||||||
|
}
|
||||||
|
})";
|
||||||
|
|
||||||
|
auto res = cli.Post("/app/data-abcde/endpoint/data/v1/action/insertOne", jsonData, "application/json");
|
||||||
|
|
||||||
|
if (res && res->status == 200) {
|
||||||
|
std::cout << "Success: " << res->body << std::endl;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
std::cerr << "Error: " << res.error() << std::endl;
|
||||||
|
}*/
|
||||||
|
|
||||||
svr.listen("0.0.0.0", 8081);
|
svr.listen("0.0.0.0", 8081);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user