-
-
Notifications
You must be signed in to change notification settings - Fork 277
feat: spotlight support #1786
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
feat: spotlight support #1786
Changes from 15 commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
2ca35c5
poc
buenaflor 3a985bd
update spotlight transport
buenaflor 52e500e
update
buenaflor 203da9c
Add test
buenaflor dd334dc
update changelog
buenaflor 00dba0d
update
buenaflor 574550e
fix
buenaflor 44ea944
update
buenaflor b93288a
change late to final
buenaflor a77e5bd
Update
buenaflor e97dce8
Fix analyze
buenaflor 562b582
Merge branch 'main' into feat/spotlight
buenaflor 8e527ba
Add format
buenaflor e864406
Fix tests
buenaflor 6784f06
change to Spotlight class
buenaflor 4ee46f7
add tests
buenaflor a8531c0
add format
buenaflor 4bf3932
Merge branch 'main' into feat/spotlight
buenaflor fcd3e62
Fix CHANGELOG
buenaflor 573ae08
Fix CHANGELOG
buenaflor File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| import 'platform_checker.dart'; | ||
|
|
||
| /// Spotlight configuration class. | ||
| class Spotlight { | ||
| /// Whether to enable Spotlight for local development. | ||
| bool enabled; | ||
|
|
||
| /// The Spotlight Sidecar URL. | ||
| /// Defaults to http://10.0.2.2:8969/stream due to Emulator on Android. | ||
| /// Otherwise defaults to http://localhost:8969/stream. | ||
| String url; | ||
|
|
||
| Spotlight({required this.enabled, String? url}) | ||
| : url = url ?? _defaultSpotlightUrl(); | ||
| } | ||
|
|
||
| String _defaultSpotlightUrl() { | ||
| return (PlatformChecker().platform.isAndroid | ||
| ? 'http://10.0.2.2:8969/stream' | ||
| : 'http://localhost:8969/stream'); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
98 changes: 98 additions & 0 deletions
98
dart/lib/src/transport/http_transport_request_handler.dart
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,98 @@ | ||
| import 'dart:async'; | ||
|
|
||
| import 'package:http/http.dart'; | ||
| import 'package:meta/meta.dart'; | ||
|
|
||
| import 'noop_encode.dart' if (dart.library.io) 'encode.dart'; | ||
| import '../protocol.dart'; | ||
| import '../sentry_options.dart'; | ||
| import '../sentry_envelope.dart'; | ||
|
|
||
| @internal | ||
| class HttpTransportRequestHandler { | ||
| final SentryOptions _options; | ||
| final Dsn _dsn; | ||
| final Map<String, String> _headers; | ||
| final Uri _requestUri; | ||
| late _CredentialBuilder _credentialBuilder; | ||
|
|
||
| HttpTransportRequestHandler(this._options, this._requestUri) | ||
| : _dsn = Dsn.parse(_options.dsn!), | ||
| _headers = _buildHeaders( | ||
| _options.platformChecker.isWeb, | ||
| _options.sentryClientName, | ||
| ) { | ||
| _credentialBuilder = _CredentialBuilder( | ||
| _dsn, | ||
| _options.sentryClientName, | ||
| ); | ||
| } | ||
|
|
||
| Future<StreamedRequest> createRequest(SentryEnvelope envelope) async { | ||
| final streamedRequest = StreamedRequest('POST', _requestUri); | ||
|
|
||
| if (_options.compressPayload) { | ||
| final compressionSink = compressInSink(streamedRequest.sink, _headers); | ||
| envelope | ||
| .envelopeStream(_options) | ||
| .listen(compressionSink.add) | ||
| .onDone(compressionSink.close); | ||
| } else { | ||
| envelope | ||
| .envelopeStream(_options) | ||
| .listen(streamedRequest.sink.add) | ||
| .onDone(streamedRequest.sink.close); | ||
| } | ||
|
|
||
| streamedRequest.headers.addAll(_credentialBuilder.configure(_headers)); | ||
| return streamedRequest; | ||
| } | ||
| } | ||
|
|
||
| Map<String, String> _buildHeaders(bool isWeb, String sdkIdentifier) { | ||
| final headers = {'Content-Type': 'application/x-sentry-envelope'}; | ||
| // NOTE(lejard_h) overriding user agent on VM and Flutter not sure why | ||
| // for web it use browser user agent | ||
| if (!isWeb) { | ||
| headers['User-Agent'] = sdkIdentifier; | ||
| } | ||
| return headers; | ||
| } | ||
|
|
||
| class _CredentialBuilder { | ||
| final String _authHeader; | ||
|
|
||
| _CredentialBuilder._(String authHeader) : _authHeader = authHeader; | ||
|
|
||
| factory _CredentialBuilder(Dsn dsn, String sdkIdentifier) { | ||
| final authHeader = _buildAuthHeader( | ||
| publicKey: dsn.publicKey, | ||
| secretKey: dsn.secretKey, | ||
| sdkIdentifier: sdkIdentifier, | ||
| ); | ||
|
|
||
| return _CredentialBuilder._(authHeader); | ||
| } | ||
|
|
||
| static String _buildAuthHeader({ | ||
| required String publicKey, | ||
| String? secretKey, | ||
| required String sdkIdentifier, | ||
| }) { | ||
| var header = 'Sentry sentry_version=7, sentry_client=$sdkIdentifier, ' | ||
| 'sentry_key=$publicKey'; | ||
|
|
||
| if (secretKey != null) { | ||
| header += ', sentry_secret=$secretKey'; | ||
| } | ||
|
|
||
| return header; | ||
| } | ||
|
|
||
| Map<String, String> configure(Map<String, String> headers) { | ||
| return headers | ||
| ..addAll( | ||
| <String, String>{'X-Sentry-Auth': _authHeader}, | ||
| ); | ||
| } | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.