feat(code_push_protocol): add CreateReleaseResponse and ArtifactUploadUrls (#576)
This commit is contained in:
+1
@@ -1 +1,2 @@
|
||||
export 'create_release_request.dart';
|
||||
export 'create_release_response.dart';
|
||||
|
||||
+29
@@ -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;
|
||||
}
|
||||
+33
@@ -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';
|
||||
|
||||
+29
@@ -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()),
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user