58 lines
1.4 KiB
C++
58 lines
1.4 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "WAICTUtils.h"
|
|
|
|
#include <cstdint>
|
|
|
|
#include "mozilla/net/SFV.h"
|
|
#include "nsString.h"
|
|
|
|
namespace mozilla::waict {
|
|
|
|
LazyLogModule gWaictLog("WAICT");
|
|
|
|
Result<nsCString, nsresult> ParseManifest(const net::SFV::DictResult& aDict) {
|
|
nsAutoCString manifestURL;
|
|
nsresult rv = aDict.GetItem<net::SFV::SFVString>("manifest"_ns, manifestURL);
|
|
if (NS_FAILED(rv)) {
|
|
return Err(rv);
|
|
}
|
|
if (manifestURL.IsEmpty()) {
|
|
return Err(NS_ERROR_FAILURE);
|
|
}
|
|
return nsCString(manifestURL);
|
|
}
|
|
|
|
Result<uint64_t, nsresult> ParseMaxAge(const net::SFV::DictResult& aDict) {
|
|
int64_t maxAgeSeconds;
|
|
nsresult rv = aDict.GetItem<net::SFV::Integer>("max-age"_ns, maxAgeSeconds);
|
|
if (NS_FAILED(rv)) {
|
|
return Err(rv);
|
|
}
|
|
if (maxAgeSeconds < 0) {
|
|
return Err(NS_ERROR_FAILURE);
|
|
}
|
|
return static_cast<uint64_t>(maxAgeSeconds);
|
|
}
|
|
|
|
Result<WaictMode, nsresult> ParseMode(const net::SFV::DictResult& aDict) {
|
|
nsAutoCString token;
|
|
nsresult rv = aDict.GetItem<net::SFV::Token>("mode"_ns, token);
|
|
if (NS_FAILED(rv)) {
|
|
return Err(rv);
|
|
}
|
|
|
|
if (token.EqualsLiteral("enforce")) {
|
|
return WaictMode::Enforce;
|
|
}
|
|
if (token.EqualsLiteral("report")) {
|
|
return WaictMode::Report;
|
|
}
|
|
|
|
return Err(NS_ERROR_FAILURE);
|
|
}
|
|
|
|
} // namespace mozilla::waict
|