#pragma once #include "common.hpp" #include namespace rack { /** Networking functions for HTTP requests, URLs, and downloads */ namespace network { enum Method { GET, POST, PUT, DELETE, }; /** Requests a JSON API URL over HTTP(S), using the data as the query (GET) or the body (POST, etc) Caller must json_decref(). */ json_t *requestJson(Method method, std::string url, json_t *dataJ); /** Returns true if downloaded successfully */ bool requestDownload(std::string url, const std::string &filename, float *progress); /** URL-encodes `s` */ std::string encodeUrl(const std::string &s); /** Computes the SHA256 of the file at `filename` */ std::string computeSHA256File(const std::string &filename); } // namespace network } // namespace rack