diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 7d208f83..864438ee 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog All notable changes to this project will be documented in this file. +## [7.5.2] - 2019-12-11 + +(ws) cobra to sentry - created events with sentry tags based on tags present in the cobra messages + ## [7.5.1] - 2019-12-06 (mac) convert SSL errors to utf8 diff --git a/ixsentry/ixsentry/IXSentryClient.cpp b/ixsentry/ixsentry/IXSentryClient.cpp index b698abf6..51eb8c83 100644 --- a/ixsentry/ixsentry/IXSentryClient.cpp +++ b/ixsentry/ixsentry/IXSentryClient.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include @@ -120,26 +121,6 @@ namespace ix { Json::Value payload; - payload["platform"] = "python"; - payload["sdk"]["name"] = "ws"; - payload["sdk"]["version"] = "1.0.0"; - payload["timestamp"] = SentryClient::getIso8601(); - - bool isNoisyTypes = msg["id"].asString() == "game_noisytypes_id"; - - std::string stackTraceFieldName = isNoisyTypes ? "traceback" : "stack"; - std::string stack(msg["data"][stackTraceFieldName].asString()); - - Json::Value exception; - exception["stacktrace"]["frames"] = parseLuaStackTrace(stack); - exception["value"] = isNoisyTypes ? parseExceptionName(stack) : msg["data"]["message"]; - - payload["exception"].append(exception); - - Json::Value extra; - extra["cobra_event"] = msg; - extra["cobra_event"] = msg; - // // "tags": [ // [ @@ -148,8 +129,62 @@ namespace ix // ], // ] // - Json::Value tags; + Json::Value tags(Json::arrayValue); + payload["platform"] = "python"; + payload["sdk"]["name"] = "ws"; + payload["sdk"]["version"] = IX_WEBSOCKET_VERSION; + payload["timestamp"] = SentryClient::getIso8601(); + + bool isNoisyTypes = msg["id"].asString() == "game_noisytypes_id"; + + std::string stackTraceFieldName = isNoisyTypes ? "traceback" : "stack"; + std::string stack; + std::string message; + + if (isNoisyTypes) + { + stack = msg["data"][stackTraceFieldName].asString(); + message = parseExceptionName(stack); + } + else // logging + { + if (msg["data"].isMember("info")) + { + stack = msg["data"]["info"][stackTraceFieldName].asString(); + message = msg["data"]["info"]["message"].asString(); + + if (msg["data"].isMember("tags")) + { + auto members = msg["data"]["tags"].getMemberNames(); + + for (auto member : members) + { + Json::Value tag; + tag.append(member); + tag.append(msg["data"]["tags"][member]); + tags.append(tag); + } + } + } + else + { + stack = msg["data"][stackTraceFieldName].asString(); + message = msg["data"]["message"].asString(); + } + } + + Json::Value exception; + exception["stacktrace"]["frames"] = parseLuaStackTrace(stack); + exception["value"] = message; + + payload["exception"].append(exception); + + Json::Value extra; + extra["cobra_event"] = msg; + extra["cobra_event"] = msg; + + // Builtin tags Json::Value gameTag; gameTag.append("game"); gameTag.append(msg["device"]["game"]); diff --git a/ixwebsocket/IXWebSocketVersion.h b/ixwebsocket/IXWebSocketVersion.h index 337583e6..5b485625 100644 --- a/ixwebsocket/IXWebSocketVersion.h +++ b/ixwebsocket/IXWebSocketVersion.h @@ -6,4 +6,4 @@ #pragma once -#define IX_WEBSOCKET_VERSION "7.5.1" +#define IX_WEBSOCKET_VERSION "7.5.2" diff --git a/makefile b/makefile index d43e09d8..2ecdb9c9 100644 --- a/makefile +++ b/makefile @@ -40,7 +40,7 @@ xcode_openssl: .PHONY: docker -NAME := bsergean/ws +NAME := ${DOCKER_REPO}/ws TAG := $(shell sh tools/extract_version.sh) IMG := ${NAME}:${TAG} LATEST := ${NAME}:latest diff --git a/ws/ws_cobra_to_sentry.cpp b/ws/ws_cobra_to_sentry.cpp index d2f96916..a09182ad 100644 --- a/ws/ws_cobra_to_sentry.cpp +++ b/ws/ws_cobra_to_sentry.cpp @@ -84,6 +84,12 @@ namespace ix auto ret = sentryClient.send(msg, verbose); HttpResponsePtr response = ret.first; + if (!response) + { + spdlog::warn("Null HTTP Response"); + continue; + } + if (verbose) { for (auto it : response->headers)