From ff0c2fa5c1c63008b8aa05a80169524c4ffa228f Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Fri, 2 Jun 2023 09:48:49 -0700 Subject: [PATCH] feat(code_push_protocol): add `CreatePatchResponse` (#582) --- .../messages/create_patch/create_patch.dart | 1 + .../create_patch/create_patch_response.dart | 34 +++++++++++++++++++ .../create_patch/create_patch_response.g.dart | 33 ++++++++++++++++++ .../create_patch_response_test.dart | 24 +++++++++++++ 4 files changed, 92 insertions(+) create mode 100644 packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.dart create mode 100644 packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.g.dart create mode 100644 packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_response_test.dart diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch.dart index 1e7c017e..e70edf05 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch.dart @@ -1 +1,2 @@ export 'create_patch_request.dart'; +export 'create_patch_response.dart'; diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.dart new file mode 100644 index 00000000..22895d34 --- /dev/null +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.dart @@ -0,0 +1,34 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart'; + +part 'create_patch_response.g.dart'; + +/// {@template create_patch_response} +/// The response body for POST /api/v1/patches +/// {@endtemplate} +@JsonSerializable() +class CreatePatchResponse { + /// {@macro create_patch_response} + const CreatePatchResponse({ + required this.id, + required this.number, + required this.artifactUploadUrls, + }); + + /// Converts a Map to a [CreatePatchResponse] + factory CreatePatchResponse.fromJson(Map json) => + _$CreatePatchResponseFromJson(json); + + /// Converts a [CreatePatchResponse] to a Map + Map toJson() => _$CreatePatchResponseToJson(this); + + /// The unique patch identifier. + final int id; + + /// The patch number. + /// A larger number equates to a newer patch. + final int number; + + /// The upload urls for artifacts. + final ArtifactUploadUrls artifactUploadUrls; +} diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.g.dart b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.g.dart new file mode 100644 index 00000000..b18a1bad --- /dev/null +++ b/packages/shorebird_code_push_protocol/lib/src/messages/create_patch/create_patch_response.g.dart @@ -0,0 +1,33 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +// ignore_for_file: implicit_dynamic_parameter, require_trailing_commas, cast_nullable_to_non_nullable, lines_longer_than_80_chars + +part of 'create_patch_response.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +CreatePatchResponse _$CreatePatchResponseFromJson(Map json) => + $checkedCreate( + 'CreatePatchResponse', + json, + ($checkedConvert) { + final val = CreatePatchResponse( + id: $checkedConvert('id', (v) => v as int), + number: $checkedConvert('number', (v) => v as int), + artifactUploadUrls: $checkedConvert('artifact_upload_urls', + (v) => ArtifactUploadUrls.fromJson(v as Map)), + ); + return val; + }, + fieldKeyMap: const {'artifactUploadUrls': 'artifact_upload_urls'}, + ); + +Map _$CreatePatchResponseToJson( + CreatePatchResponse instance) => + { + 'id': instance.id, + 'number': instance.number, + 'artifact_upload_urls': instance.artifactUploadUrls.toJson(), + }; diff --git a/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_response_test.dart b/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_response_test.dart new file mode 100644 index 00000000..6dc3863b --- /dev/null +++ b/packages/shorebird_code_push_protocol/test/src/messages/create_patch/create_patch_response_test.dart @@ -0,0 +1,24 @@ +import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart'; +import 'package:test/test.dart'; + +void main() { + group(CreatePatchResponse, () { + test('can be (de)serialized', () { + const response = CreatePatchResponse( + id: 42, + number: 1, + artifactUploadUrls: ArtifactUploadUrls( + android: AndroidArtifactUploadUrls( + x86: 'x86', + aarch64: 'aarch64', + arm: 'arm', + ), + ), + ); + expect( + CreatePatchResponse.fromJson(response.toJson()).toJson(), + equals(response.toJson()), + ); + }); + }); +}