diff --git a/android/plugins/retrofit2-protobuf/build.gradle b/android/plugins/retrofit2-protobuf/build.gradle index 92accde03..8f6510f55 100644 --- a/android/plugins/retrofit2-protobuf/build.gradle +++ b/android/plugins/retrofit2-protobuf/build.gradle @@ -25,7 +25,7 @@ android { implementation project(':network-plugin') implementation deps.protobuf implementation "com.squareup.retrofit2:retrofit:2.9.0" - implementation "com.github.hbmartin:protobuf_java_to_protobufjs:0.1.0" + implementation "com.github.hbmartin:protobuf_java_to_protobufjs:0.2.0" compileOnly deps.jsr305 } } diff --git a/desktop/plugins/public/network/ProtobufDefinitionsRepository.tsx b/desktop/plugins/public/network/ProtobufDefinitionsRepository.tsx index bd968cff1..814a7834d 100644 --- a/desktop/plugins/public/network/ProtobufDefinitionsRepository.tsx +++ b/desktop/plugins/public/network/ProtobufDefinitionsRepository.tsx @@ -63,6 +63,10 @@ export class ProtobufDefinitionsRepository { } } + public hasDefinition(method: string, path: string): boolean { + return this.rawDefinitions.hasOwnProperty(this.key(method, path)); + } + private generateRoots(key: string) { if (key in this.cachedDecodedDefinitions) { return; diff --git a/desktop/plugins/public/network/RequestDetails.tsx b/desktop/plugins/public/network/RequestDetails.tsx index 58e071121..0f03ad16d 100644 --- a/desktop/plugins/public/network/RequestDetails.tsx +++ b/desktop/plugins/public/network/RequestDetails.tsx @@ -670,7 +670,11 @@ class ProtobufFormatter { formatRequest(request: Request) { if ( getHeaderValue(request.requestHeaders, 'content-type') === - 'application/x-protobuf' + 'application/x-protobuf' || + this.protobufDefinitionRepository.hasDefinition( + request.method, + request.url, + ) ) { const protobufDefinition = this.protobufDefinitionRepository.getRequestType( @@ -681,7 +685,9 @@ class ProtobufFormatter { return ( Could not locate protobuf definition for request body of{' '} - {request.url} + {request.url}
+ Please send ProtobufJS definitions with the plugin's + addProtobufDefinitions method.
); } @@ -704,7 +710,11 @@ class ProtobufFormatter { if ( getHeaderValue(request.responseHeaders, 'content-type') === 'application/x-protobuf' || - request.url.endsWith('.proto') + request.url.endsWith('.proto') || + this.protobufDefinitionRepository.hasDefinition( + request.method, + request.url, + ) ) { const protobufDefinition = this.protobufDefinitionRepository.getResponseType( @@ -715,7 +725,9 @@ class ProtobufFormatter { return ( Could not locate protobuf definition for response body of{' '} - {request.url} + {request.url}
+ Please send ProtobufJS definitions with the plugin's + addProtobufDefinitions method.
); }