feat(code_push_protocol): add CreateReleaseResponse and ArtifactUploadUrls (#576)

This commit is contained in:
Felix Angelov
2023-06-02 07:59:08 -07:00
committed by GitHub
parent 75c1725a69
commit 90bf165518
8 changed files with 211 additions and 0 deletions
@@ -1 +1,2 @@
export 'create_release_request.dart';
export 'create_release_response.dart';
@@ -0,0 +1,29 @@
import 'package:json_annotation/json_annotation.dart';
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
part 'create_release_response.g.dart';
/// {@template create_release_response}
/// The response body for POST /api/v2/releases
/// {@endtemplate}
@JsonSerializable()
class CreateReleaseResponse {
/// {@macro create_release_response}
const CreateReleaseResponse({
required this.release,
required this.artifactUploadUrls,
});
/// Converts a Map<String, dynamic> to a [CreateReleaseResponse]
factory CreateReleaseResponse.fromJson(Map<String, dynamic> json) =>
_$CreateReleaseResponseFromJson(json);
/// Converts a [CreateReleaseResponse] to a Map<String, dynamic>
Map<String, dynamic> toJson() => _$CreateReleaseResponseToJson(this);
/// The release that was created.
final Release release;
/// The upload urls for artifacts.
final ArtifactUploadUrls artifactUploadUrls;
}
@@ -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_release_response.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
CreateReleaseResponse _$CreateReleaseResponseFromJson(
Map<String, dynamic> json) =>
$checkedCreate(
'CreateReleaseResponse',
json,
($checkedConvert) {
final val = CreateReleaseResponse(
release: $checkedConvert(
'release', (v) => Release.fromJson(v as Map<String, dynamic>)),
artifactUploadUrls: $checkedConvert('artifact_upload_urls',
(v) => ArtifactUploadUrls.fromJson(v as Map<String, dynamic>)),
);
return val;
},
fieldKeyMap: const {'artifactUploadUrls': 'artifact_upload_urls'},
);
Map<String, dynamic> _$CreateReleaseResponseToJson(
CreateReleaseResponse instance) =>
<String, dynamic>{
'release': instance.release.toJson(),
'artifact_upload_urls': instance.artifactUploadUrls.toJson(),
};
@@ -0,0 +1,46 @@
import 'package:json_annotation/json_annotation.dart';
part 'artifact_upload_urls.g.dart';
/// {@template artifact_upload_urls}
/// An object that contains signed upload URLs for artifacts.
/// {@endtemplate}
@JsonSerializable()
class ArtifactUploadUrls {
/// {@macro artifact_upload_urls}
const ArtifactUploadUrls({required this.android});
/// Converts a Map<String, dynamic> to an [ArtifactUploadUrls]
factory ArtifactUploadUrls.fromJson(Map<String, dynamic> json) =>
_$ArtifactUploadUrlsFromJson(json);
/// Converts a [ArtifactUploadUrls] to a Map<String, dynamic>
Map<String, dynamic> toJson() => _$ArtifactUploadUrlsToJson(this);
/// The upload urls for Android artifacts.
final AndroidArtifactUploadUrls android;
}
/// {@template android_artifact_upload_urls}
/// An object that contains signed upload URLs for Android artifacts.
/// {@endtemplate}
@JsonSerializable()
class AndroidArtifactUploadUrls {
/// {@macro android_artifact_upload_urls}
const AndroidArtifactUploadUrls({
required this.x86,
required this.aarch64,
required this.arm,
});
/// Converts a Map<String, dynamic> to an [AndroidArtifactUploadUrls]
factory AndroidArtifactUploadUrls.fromJson(Map<String, dynamic> json) =>
_$AndroidArtifactUploadUrlsFromJson(json);
/// Converts a [AndroidArtifactUploadUrls] to a Map<String, dynamic>
Map<String, dynamic> toJson() => _$AndroidArtifactUploadUrlsToJson(this);
final String x86;
final String aarch64;
final String arm;
}
@@ -0,0 +1,52 @@
// 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 'artifact_upload_urls.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
ArtifactUploadUrls _$ArtifactUploadUrlsFromJson(Map<String, dynamic> json) =>
$checkedCreate(
'ArtifactUploadUrls',
json,
($checkedConvert) {
final val = ArtifactUploadUrls(
android: $checkedConvert(
'android',
(v) => AndroidArtifactUploadUrls.fromJson(
v as Map<String, dynamic>)),
);
return val;
},
);
Map<String, dynamic> _$ArtifactUploadUrlsToJson(ArtifactUploadUrls instance) =>
<String, dynamic>{
'android': instance.android.toJson(),
};
AndroidArtifactUploadUrls _$AndroidArtifactUploadUrlsFromJson(
Map<String, dynamic> json) =>
$checkedCreate(
'AndroidArtifactUploadUrls',
json,
($checkedConvert) {
final val = AndroidArtifactUploadUrls(
x86: $checkedConvert('x86', (v) => v as String),
aarch64: $checkedConvert('aarch64', (v) => v as String),
arm: $checkedConvert('arm', (v) => v as String),
);
return val;
},
);
Map<String, dynamic> _$AndroidArtifactUploadUrlsToJson(
AndroidArtifactUploadUrls instance) =>
<String, dynamic>{
'x86': instance.x86,
'aarch64': instance.aarch64,
'arm': instance.arm,
};
@@ -1,5 +1,6 @@
export 'app.dart';
export 'app_metadata.dart';
export 'artifact_upload_urls.dart';
export 'channel.dart';
export 'collaborator.dart';
export 'error_response.dart';
@@ -0,0 +1,29 @@
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
import 'package:test/test.dart';
void main() {
group(CreateReleaseResponse, () {
test('can be (de)serialized', () {
const response = CreateReleaseResponse(
release: Release(
id: 0,
appId: 'test-app-id',
version: '1.0.0',
displayName: 'v1.0.0',
flutterRevision: 'flutter-revision',
),
artifactUploadUrls: ArtifactUploadUrls(
android: AndroidArtifactUploadUrls(
x86: 'x86',
aarch64: 'aarch64',
arm: 'arm',
),
),
);
expect(
CreateReleaseResponse.fromJson(response.toJson()).toJson(),
equals(response.toJson()),
);
});
});
}
@@ -0,0 +1,20 @@
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
import 'package:test/test.dart';
void main() {
group(ArtifactUploadUrls, () {
test('can be (de)serialized', () {
const artifactUploadUrls = ArtifactUploadUrls(
android: AndroidArtifactUploadUrls(
x86: 'x86',
aarch64: 'aarch64',
arm: 'arm',
),
);
expect(
ArtifactUploadUrls.fromJson(artifactUploadUrls.toJson()).toJson(),
equals(artifactUploadUrls.toJson()),
);
});
});
}