feat(code_push_protocol): GetReleaseArtifactsResponse (#632)

This commit is contained in:
Felix Angelov
2023-06-12 09:57:42 -07:00
committed by GitHub
parent a70866bee9
commit 2fc0cdb36b
5 changed files with 84 additions and 0 deletions
@@ -0,0 +1 @@
export '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<String, dynamic> to a [GetReleaseArtifactsResponse].
factory GetReleaseArtifactsResponse.fromJson(Map<String, dynamic> json) =>
_$GetReleaseArtifactsResponseFromJson(json);
/// Converts a [GetReleaseArtifactsResponse] to a Map<String, dynamic>.
Json toJson() => _$GetReleaseArtifactsResponseToJson(this);
/// The artifacts for the release.
final List<ReleaseArtifact> artifacts;
}
@@ -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<String, dynamic> json) =>
$checkedCreate(
'GetReleaseArtifactsResponse',
json,
($checkedConvert) {
final val = GetReleaseArtifactsResponse(
artifacts: $checkedConvert(
'artifacts',
(v) => (v as List<dynamic>)
.map((e) =>
ReleaseArtifact.fromJson(e as Map<String, dynamic>))
.toList()),
);
return val;
},
);
Map<String, dynamic> _$GetReleaseArtifactsResponseToJson(
GetReleaseArtifactsResponse instance) =>
<String, dynamic>{
'artifacts': instance.artifacts.map((e) => e.toJson()).toList(),
};
@@ -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';
@@ -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()),
);
});
});
}