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
|
||||
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/props.json PROPS)
|
||||
string(JSON VER GET ${PROPS} version)
|
||||
|
||||
# find curl
|
||||
find_package(CURL REQUIRED)
|
||||
project(stc
|
||||
DESCRIPTION "Easily download collections and mods from steam."
|
||||
VERSION ${VER})
|
||||
|
||||
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
|
||||
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_executable(stc ${STC_SOURCE_FILES})
|
||||
install(TARGETS stc DESTINATION bin)
|
||||
|
||||
# add curl libraries
|
||||
target_link_libraries(stc PRIVATE ${CURL_LIBRARIES})
|
||||
target_include_directories(stc PRIVATE ${CURL_INCLUDE_DIRS})
|
||||
# DEBIAN
|
||||
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "DRAGONTOS")
|
||||
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 <filesystem>
|
||||
#include <fstream>
|
||||
#include "includes/getHttp.h"
|
||||
#include <ios>
|
||||
#include <iostream>
|
||||
#include <ostream>
|
||||
|
@ -85,9 +86,7 @@ int main(int argc, char **argv, char **envp) {
|
|||
dir = ARGS[1+5];
|
||||
}
|
||||
|
||||
// should be done with libcurl in the future ata
|
||||
system(std::string {"curl https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid + " -o " + cachesc}.c_str());
|
||||
|
||||
getHttp(std::string {"https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid}, &cachesc);
|
||||
std::cout << collectionid << user << pass << gameid << dir;
|
||||
std::cout << "success1\n";
|
||||
break;
|
||||
|
@ -102,9 +101,7 @@ int main(int argc, char **argv, char **envp) {
|
|||
dir = ARGS[1+3];
|
||||
}
|
||||
|
||||
// should be done with libcurl in the future ata
|
||||
system(std::string {"curl https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid + " -o " + cachesc}.c_str());
|
||||
|
||||
getHttp(std::string {"https://steamcommunity.com/sharedfiles/filedetails/?id=" + collectionid}, &cachesc);
|
||||
std::cout << collectionid << gameid << dir;
|
||||
|
||||
std::cout << "success\n";
|
||||
|
|
Loading…
Add table
Reference in a new issue