Skip to content

simple header-only library to recover a padded string from a URL

License

Notifications You must be signed in to change notification settings

simdjson/curltostring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

curl_to_padded_string

CI

A header-only C++ library that loads a URL into a simdjson::padded_string using libcurl.

Dependencies

  • C++23 compiler
  • libcurl
  • simdjson (fetched automatically via CMake)

Building

cmake -B build
cmake --build build

Usage

Include the header and link against curl and simdjson:

#include "curl_to_padded_string.h"

int main() {
    auto result = curl_to_padded_string::load_url("https://httpbin.org/json");
    if (result) {
        auto& padded = result.value();
        // Now you can parse with simdjson
        // simdjson::ondemand::parser parser;
        // auto doc = parser.iterate(padded);
        // ...
    } else {
        std::cerr << "Error: " << result.error().what() << std::endl;
    }
    return 0;
}

API

namespace curl_to_padded_string {
    std::expected<simdjson::padded_string> load_url(const std::string& url);
}

Returns a simdjson::padded_string on success, or an error on failure.

Functions provided

/// @brief Get the actual payload size of a URL without downloading the full content.
/// 
/// This function performs a full request to determine the content size
/// by using a write callback that counts bytes without storing them.
/// 
/// @param url The URL string to check (must be a valid HTTP/HTTPS URL).
/// @return The size in bytes of the content at the URL, or 0 if the request fails
///         or curl initialization fails.
inline size_t get_actual_payload_size(const std::string& url);

/// @brief Load the content of a URL into a padded string optimized for JSON parsing.
/// 
/// Downloads the full content from the URL and stores it in a simdjson padded_string,
/// which provides the necessary padding for efficient SIMD JSON parsing.
/// 
/// @param url The URL string to load (must be a valid HTTP/HTTPS URL).
/// @return An expected containing:
///         - On success: A padded_string with the downloaded content
///         - On failure: An unexpected with a runtime_error describing the issue
inline std::expected<simdjson::padded_string, std::runtime_error> load_url(const std::string& url);

License

Public Domain (Unlicense)

About

simple header-only library to recover a padded string from a URL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors