From 2fc0cdb36b8439b96789ffc957df13db90ad8ae9 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 12 Jun 2023 09:57:42 -0700 Subject: [PATCH] feat(code_push_protocol): `GetReleaseArtifactsResponse` (#632) --- .../get_release_artifacts.dart | 1 + .../get_release_artifacts_response.dart | 23 +++++++++++++ .../get_release_artifacts_response.g.dart | 33 +++++++++++++++++++ .../lib/src/messages/messages.dart | 1 + .../get_release_artifacts_response_test.dart | 26 +++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts.dart create mode 100644 packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.dart create mode 100644 packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.g.dart create mode 100644 packages/shorebird_code_push_protocol/test/src/messages/get_release_artifacts/get_release_artifacts_response_test.dart diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts.dart b/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts.dart new file mode 100644 index 00000000..7fa21f66 --- /dev/null +++ b/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts.dart @@ -0,0 +1 @@ +export 'get_release_artifacts_response.dart'; diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.dart b/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.dart new file mode 100644 index 00000000..ae84a441 --- /dev/null +++ b/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.dart @@ -0,0 +1,23 @@ +import 'package:json_annotation/json_annotation.dart'; +import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart'; + +part 'get_release_artifacts_response.g.dart'; + +/// {@template get_release_artifacts_response} +/// The response body for GET /api/v1/release/:release/artifacts +/// {@endtemplate} +@JsonSerializable() +class GetReleaseArtifactsResponse { + /// {@macro get_release_artifacts_response} + const GetReleaseArtifactsResponse({required this.artifacts}); + + /// Converts a Map to a [GetReleaseArtifactsResponse]. + factory GetReleaseArtifactsResponse.fromJson(Map json) => + _$GetReleaseArtifactsResponseFromJson(json); + + /// Converts a [GetReleaseArtifactsResponse] to a Map. + Json toJson() => _$GetReleaseArtifactsResponseToJson(this); + + /// The artifacts for the release. + final List artifacts; +} diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.g.dart b/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_response.g.dart new file mode 100644 index 00000000..3f806f92 --- /dev/null +++ b/packages/shorebird_code_push_protocol/lib/src/messages/get_release_artifacts/get_release_artifacts_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 'get_release_artifacts_response.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +GetReleaseArtifactsResponse _$GetReleaseArtifactsResponseFromJson( + Map json) => + $checkedCreate( + 'GetReleaseArtifactsResponse', + json, + ($checkedConvert) { + final val = GetReleaseArtifactsResponse( + artifacts: $checkedConvert( + 'artifacts', + (v) => (v as List) + .map((e) => + ReleaseArtifact.fromJson(e as Map)) + .toList()), + ); + return val; + }, + ); + +Map _$GetReleaseArtifactsResponseToJson( + GetReleaseArtifactsResponse instance) => + { + 'artifacts': instance.artifacts.map((e) => e.toJson()).toList(), + }; diff --git a/packages/shorebird_code_push_protocol/lib/src/messages/messages.dart b/packages/shorebird_code_push_protocol/lib/src/messages/messages.dart index e091b7f9..4ac3f23b 100644 --- a/packages/shorebird_code_push_protocol/lib/src/messages/messages.dart +++ b/packages/shorebird_code_push_protocol/lib/src/messages/messages.dart @@ -9,4 +9,5 @@ export 'create_payment_link/create_payment_link.dart'; export 'create_release/create_release.dart'; export 'create_release_artifact/create_release_artifact.dart'; export 'create_user/create_user.dart'; +export 'get_release_artifacts/get_release_artifacts.dart'; export 'promote_patch/promote_patch.dart'; diff --git a/packages/shorebird_code_push_protocol/test/src/messages/get_release_artifacts/get_release_artifacts_response_test.dart b/packages/shorebird_code_push_protocol/test/src/messages/get_release_artifacts/get_release_artifacts_response_test.dart new file mode 100644 index 00000000..df7db0a5 --- /dev/null +++ b/packages/shorebird_code_push_protocol/test/src/messages/get_release_artifacts/get_release_artifacts_response_test.dart @@ -0,0 +1,26 @@ +import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart'; +import 'package:test/test.dart'; + +void main() { + group(GetReleaseArtifactsResponse, () { + test('can be (de)serialized', () { + const response = GetReleaseArtifactsResponse( + artifacts: [ + ReleaseArtifact( + id: 42, + releaseId: 1, + arch: 'aarch64', + platform: 'android', + hash: '#', + size: 1337, + url: 'https://example.com', + ), + ], + ); + expect( + GetReleaseArtifactsResponse.fromJson(response.toJson()).toJson(), + equals(response.toJson()), + ); + }); + }); +}