Skip to content

Commit

Permalink
feat: Set event.origin and event.environment tags
Browse files Browse the repository at this point in the history
  • Loading branch information
jennmueng committed Mar 16, 2021
1 parent 8f7dbff commit 9d92e37
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 9 deletions.
32 changes: 32 additions & 0 deletions src/android/io/sentry/SentryCordova.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import io.sentry.android.core.AnrIntegration;
import io.sentry.android.core.NdkIntegration;
import io.sentry.android.core.SentryAndroid;
import io.sentry.protocol.SdkVersion;
import io.sentry.protocol.User;

public class SentryCordova extends CordovaPlugin {
Expand Down Expand Up @@ -196,6 +197,12 @@ private void startWithOptions(final JSONObject jsonOptions, final CallbackContex
options.setEnableNdk(false);
}

options.setBeforeSend((event, hint) -> {
setEventOriginTag(event);

return event;
});

sentryOptions = options;
} catch (JSONException e) {
logger.info("Error parsing options JSON sent over native bridge.");
Expand Down Expand Up @@ -380,5 +387,30 @@ private SentryLevel getSentryLevelFromString(String level) {
}
}

private final String androidSdk = "sentry.java.android";
private final String nativeSdk = "sentry.native";

private void setEventOriginTag(SentryEvent event) {
SdkVersion sdk = event.getSdk();
if (sdk != null) {
switch (sdk.getName()) {
// If the event is from cordova js, it gets set there and we do not handle it here.
case nativeSdk:
setEventEnvironmentTag(event, "android", "native");
break;
case androidSdk:
setEventEnvironmentTag(event, "android", "java");
break;
default:
break;
}
}
}

private void setEventEnvironmentTag(SentryEvent event, String origin, String environment) {
event.setTag("event.origin", origin);
event.setTag("event.environment", environment);
}

private void crash() { Sentry.captureException(new RuntimeException("TEST - Sentry Silent Client Crash")); }
}
32 changes: 23 additions & 9 deletions src/ios/SentryCordova.m
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
#import <Cordova/CDVAvailability.h>
@import Sentry;

NSString *const SentryCordovaVersionString = @"1.0.0-rc.0";
NSString *const SentryCordovaSdkName = @"sentry-cordova";
NSString *const cocoaSdk = @"sentry.cocoa";

@implementation SentryCordova

Expand All @@ -14,9 +13,10 @@ - (void)pluginInitialize {
- (void)startWithOptions:(CDVInvokedUrlCommand *)command {
NSDictionary *options = [command.arguments objectAtIndex:0];

SentryBeforeSendEventCallback beforeSend =
^SentryEvent *(SentryEvent *event) {
SentryBeforeSendEventCallback beforeSend = ^SentryEvent *(SentryEvent *event) {
[self setReleaseVersionDist:event];
[self setEventOriginTag:event];

return event;
};
[options setValue:beforeSend forKey:@"beforeSend"];
Expand All @@ -39,6 +39,25 @@ - (void)startWithOptions:(CDVInvokedUrlCommand *)command {
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
}

- (void)setEventOriginTag:(SentryEvent *)event {
if (event.sdk != nil) {
NSString *sdkName = event.sdk[@"name"];

// If the event is from cordova js, it gets set there and we do not handle it here.
if ([sdkName isEqualToString:cocoaSdk]) {
[self setEventEnvironmentTag:event origin:@"ios" environment:@"native"];
}
}
}

- (void)setEventEnvironmentTag:(SentryEvent *)event origin:(NSString *)origin environment:(NSString *)environment {
NSMutableDictionary *newTags = [NSMutableDictionary new];
[newTags addEntriesFromDictionary:event.tags];
[newTags setValue:origin forKey:@"event.origin"];
[newTags setValue:environment forKey:@"event.environment"];
event.tags = newTags;
}

- (void)setReleaseVersionDist:(SentryEvent *)event {
if (event.extra[@"__sentry_version"]) {
NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];
Expand All @@ -54,11 +73,6 @@ - (void)setReleaseVersionDist:(SentryEvent *)event {
event.dist =
[NSString stringWithFormat:@"%@", event.extra[@"__sentry_dist"]];
}
event.sdk = @{
@"name" : SentryCordovaSdkName,
@"version" : SentryCordovaVersionString,
@"integrations" : @[ @"sentry-cocoa" ]
};
}

- (void)captureEnvelope:(CDVInvokedUrlCommand *)command {
Expand Down
6 changes: 6 additions & 0 deletions src/js/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ export class CordovaClient extends BaseClient<CordovaBackend, CordovaOptions> {
version: SDK_VERSION,
};

if (!event.tags) {
event.tags = {};
}
event.tags['event.origin'] = 'cordova';
event.tags['event.environment'] = 'javascript';

return super._prepareEvent(event, scope, hint);
}
}

0 comments on commit 9d92e37

Please sign in to comment.