(ixsentry) add a library method to upload a payload directly to sentry

This commit is contained in:
Benjamin Sergeant 2020-04-14 22:02:51 -07:00
parent 3a2c446225
commit 2c4bf8f4bd
4 changed files with 36 additions and 2 deletions

View File

@ -1,6 +1,10 @@
# Changelog # Changelog
All changes to this project will be documented in this file. All changes to this project will be documented in this file.
## [9.2.7] - 2020-04-14
(ixsentry) add a library method to upload a payload directly to sentry
## [9.2.6] - 2020-04-14 ## [9.2.6] - 2020-04-14
(ixcobra) snake server / handle invalid incoming json messages + cobra subscriber in fluentd mode insert a created_at timestamp entry (ixcobra) snake server / handle invalid incoming json messages + cobra subscriber in fluentd mode insert a created_at timestamp entry

View File

@ -64,7 +64,8 @@ namespace ix
std::string SentryClient::computeAuthHeader() std::string SentryClient::computeAuthHeader()
{ {
std::string securityHeader("Sentry sentry_version=5"); std::string securityHeader("Sentry sentry_version=5");
securityHeader += ",sentry_client=ws/1.0.0"; securityHeader += ",sentry_client=ws/";
securityHeader += std::string(IX_WEBSOCKET_VERSION);
securityHeader += ",sentry_timestamp=" + std::to_string(SentryClient::getTimestamp()); securityHeader += ",sentry_timestamp=" + std::to_string(SentryClient::getTimestamp());
securityHeader += ",sentry_key=" + _publicKey; securityHeader += ",sentry_key=" + _publicKey;
securityHeader += ",sentry_secret=" + _secretKey; securityHeader += ",sentry_secret=" + _secretKey;
@ -286,4 +287,26 @@ namespace ix
_httpClient->performRequest(args, onResponseCallback); _httpClient->performRequest(args, onResponseCallback);
} }
void SentryClient::uploadPayload(
const Json::Value& payload,
const std::string& project,
const std::string& key,
bool verbose,
const OnResponseCallback& onResponseCallback)
{
auto args = _httpClient->createRequest();
args->extraHeaders["X-Sentry-Auth"] = SentryClient::computeAuthHeader();
args->verb = HttpClient::kPost;
args->connectTimeout = 60;
args->transferTimeout = 5 * 60;
args->followRedirects = true;
args->verbose = verbose;
args->logger = [](const std::string& msg) { ix::IXCoreLogger::Log(msg.c_str()); };
args->url = _url;
args->body = _jsonWriter.write(payload);
_httpClient->performRequest(args, onResponseCallback);
}
} // namespace ix } // namespace ix

View File

@ -36,6 +36,13 @@ namespace ix
bool verbose, bool verbose,
const OnResponseCallback& onResponseCallback); const OnResponseCallback& onResponseCallback);
void uploadPayload(
const Json::Value& payload,
const std::string& project,
const std::string& key,
bool verbose,
const OnResponseCallback& onResponseCallback);
private: private:
int64_t getTimestamp(); int64_t getTimestamp();
std::string computeAuthHeader(); std::string computeAuthHeader();

View File

@ -6,4 +6,4 @@
#pragma once #pragma once
#define IX_WEBSOCKET_VERSION "9.2.6" #define IX_WEBSOCKET_VERSION "9.2.7"