added getting the http file with libcurl and updated cmake
This commit is contained in:
parent
839769d58d
commit
0509d16de9
4 changed files with 60 additions and 10 deletions
|
@ -3,20 +3,28 @@ cmake_minimum_required(VERSION 3.28.2)
|
||||||
# Get version
|
# Get version
|
||||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/props.json PROPS)
|
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/props.json PROPS)
|
||||||
string(JSON VER GET ${PROPS} version)
|
string(JSON VER GET ${PROPS} version)
|
||||||
|
# find curl
|
||||||
|
find_package(CURL REQUIRED)
|
||||||
project(stc
|
project(stc
|
||||||
DESCRIPTION "Easily download collections and mods from steam."
|
DESCRIPTION "Easily download collections and mods from steam."
|
||||||
VERSION ${VER})
|
VERSION ${VER})
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 26)
|
set(CMAKE_CXX_STANDARD 26)
|
||||||
|
# check if build type is set if it isnt set it to release
|
||||||
|
if(NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(DCKMAKE_BUILD_TYPE Release)
|
||||||
|
endif()
|
||||||
# Add the path to the source files for stc
|
# Add the path to the source files for stc
|
||||||
file(GLOB_RECURSE STC_SOURCE_FILES "src/*.cpp")
|
file(GLOB_RECURSE STC_SOURCE_FILES "src/*.cpp")
|
||||||
|
# add compiler flags
|
||||||
|
set(CMAKE_CXX_FLAGS_DEBUG "-g")
|
||||||
|
set(CMAKE_CXX_FLAGS_RELEASE "-03")
|
||||||
# Add the executable target for stc
|
# Add the executable target for stc
|
||||||
add_executable(stc ${STC_SOURCE_FILES})
|
add_executable(stc ${STC_SOURCE_FILES})
|
||||||
install(TARGETS stc DESTINATION bin)
|
install(TARGETS stc DESTINATION bin)
|
||||||
|
# add curl libraries
|
||||||
|
target_link_libraries(stc PRIVATE ${CURL_LIBRARIES})
|
||||||
|
target_include_directories(stc PRIVATE ${CURL_INCLUDE_DIRS})
|
||||||
# DEBIAN
|
# DEBIAN
|
||||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "DRAGONTOS")
|
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "DRAGONTOS")
|
||||||
set(CPACK_DEBIAN_PACKAGE_LICENSE "GPLv3")
|
set(CPACK_DEBIAN_PACKAGE_LICENSE "GPLv3")
|
||||||
|
|
39
src/getHttp.cpp
Normal file
39
src/getHttp.cpp
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <curl/easy.h>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
size_t appendCurlOutputToString(void *ptr, size_t size, size_t nmemb, std::string *woof){
|
||||||
|
// append the output from curl to a string
|
||||||
|
woof->append(static_cast<char *>(ptr), size*nmemb);
|
||||||
|
return size*nmemb;
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeHtmlFile(std::string* woof, std::string *outputfile){
|
||||||
|
// check for nullptrs
|
||||||
|
if (!woof || !outputfile){
|
||||||
|
throw("string is null\n");
|
||||||
|
}
|
||||||
|
// open file and write to it
|
||||||
|
std::ofstream meow{*outputfile};
|
||||||
|
meow << *woof;
|
||||||
|
}
|
||||||
|
|
||||||
|
void getHttp(std::string url, std::string *outputfile){
|
||||||
|
//initialize curl object and curlcode
|
||||||
|
CURL *meow = curl_easy_init();
|
||||||
|
CURLcode res;
|
||||||
|
std::string woof;
|
||||||
|
// check for nullptr and if nullptr throw an exception
|
||||||
|
if (!outputfile){
|
||||||
|
curl_easy_cleanup(meow);
|
||||||
|
throw("outputfile is null\n");
|
||||||
|
}
|
||||||
|
// set the options
|
||||||
|
curl_easy_setopt(meow, CURLOPT_URL, url.c_str());
|
||||||
|
curl_easy_setopt(meow, CURLOPT_WRITEFUNCTION, appendCurlOutputToString);
|
||||||
|
curl_easy_setopt(meow, CURLOPT_WRITEDATA, &woof);
|
||||||
|
// perform the request
|
||||||
|
curl_easy_perform(meow);
|
||||||
|
writeHtmlFile(&woof, outputfile);
|
||||||
|
curl_easy_cleanup(meow);
|
||||||
|
}
|
6
src/includes/getHttp.h
Normal file
6
src/includes/getHttp.h
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef GETHTTP_H
|
||||||
|
#define GETHTTP_H
|
||||||
|
#include <string>
|
||||||
|
void getHttp(std::string url, std::string *outputfile);
|
||||||
|
#endif
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include "includes/getHttp.h"
|
||||||
#include <ios>
|
#include <ios>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
|
@ -85,9 +86,7 @@ int main(int argc, char **argv, char **envp) {
|
||||||
dir = ARGS[1+5];
|
dir = ARGS[1+5];
|
||||||
}
|
}
|
||||||
|
|
||||||
// should be done with libcurl in the future ata
|
getHttp(std::string {"https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid}, &cachesc);
|
||||||
system(std::string {"curl https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid + " -o " + cachesc}.c_str());
|
|
||||||
|
|
||||||
std::cout << collectionid << user << pass << gameid << dir;
|
std::cout << collectionid << user << pass << gameid << dir;
|
||||||
std::cout << "success1\n";
|
std::cout << "success1\n";
|
||||||
break;
|
break;
|
||||||
|
@ -102,9 +101,7 @@ int main(int argc, char **argv, char **envp) {
|
||||||
dir = ARGS[1+3];
|
dir = ARGS[1+3];
|
||||||
}
|
}
|
||||||
|
|
||||||
// should be done with libcurl in the future ata
|
getHttp(std::string {"https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid}, &cachesc);
|
||||||
system(std::string {"curl https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid + " -o " + cachesc}.c_str());
|
|
||||||
|
|
||||||
std::cout << collectionid << gameid << dir;
|
std::cout << collectionid << gameid << dir;
|
||||||
|
|
||||||
std::cout << "success\n";
|
std::cout << "success\n";
|
||||||
|
|
Loading…
Add table
Reference in a new issue