We upgrade to 25.05 release, which contains the curl commit https://github.com/curl/curl/commit/5fbd78eb2dc4afbd8884e8eed27147fc3d4318f6 done in https://github.com/NixOS/nixpkgs/pull/396200#issuecomment-2795944006. This fixes HTTP transfers generating arbitrary errors and possibly failing unusually. Users who are already depending on 25.05-small or a recent unstable already had the fix. Special mention to the Linux kernel who gave me the opportunity to get on a 24 hours bisection side quest to fix the local release engineering test. Special thanks to everyone who had to endure me ranting. Change-Id: I866caf65d5ea103f1fa5eccd57df8031c9eacda0 Co-authored-by: eldritch horrors <pennae@lix.systems> Co-authored-by: helle <helle@h3l.li> Signed-off-by: Raito Bezarius <raito@lix.systems>
44 lines
958 B
C++
44 lines
958 B
C++
#include "lix/libutil/json.hh"
|
|
#include "lix/libutil/error.hh"
|
|
|
|
namespace nix {
|
|
|
|
const JSON * get(const JSON & map, const std::string & key)
|
|
{
|
|
auto i = map.find(key);
|
|
if (i == map.end()) return nullptr;
|
|
return &*i;
|
|
}
|
|
|
|
JSON * get(JSON & map, const std::string & key)
|
|
{
|
|
auto i = map.find(key);
|
|
if (i == map.end()) return nullptr;
|
|
return &*i;
|
|
}
|
|
|
|
const JSON & valueAt(
|
|
const JSON & map,
|
|
const std::string & key)
|
|
{
|
|
if (!map.contains(key))
|
|
throw Error("Expected JSON object to contain key '%s' but it doesn't", key);
|
|
|
|
return map[key];
|
|
}
|
|
|
|
const JSON & ensureType(
|
|
const JSON & value,
|
|
JSON::value_type expectedType
|
|
)
|
|
{
|
|
if (value.type() != expectedType)
|
|
throw Error(
|
|
"Expected JSON value to be of type '%s' but it is of type '%s'",
|
|
JSON(expectedType).type_name(),
|
|
value.type_name());
|
|
|
|
return value; // NOLINT(bugprone-return-const-ref-from-parameter)
|
|
}
|
|
}
|