feat(shorebird_code_push_protocol): add update release support (#850)
This commit is contained in:
@@ -12,3 +12,4 @@ export 'create_user/create_user.dart';
|
||||
export 'get_release_artifacts/get_release_artifacts.dart';
|
||||
export 'get_usage/get_usage.dart';
|
||||
export 'promote_patch/promote_patch.dart';
|
||||
export 'update_release/update_release.dart';
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
export 'update_release_request.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 'update_release_request.g.dart';
|
||||
|
||||
/// {@template update_release_request}
|
||||
/// Request body for PUT `api/v1/release/:id` requests.
|
||||
/// {@endtemplate}
|
||||
@JsonSerializable()
|
||||
class UpdateReleaseRequest {
|
||||
/// {@macro update_release_request}
|
||||
const UpdateReleaseRequest({
|
||||
required this.status,
|
||||
required this.platform,
|
||||
});
|
||||
|
||||
/// Converts a Map<String, dynamic> to a [UpdateReleaseRequest].
|
||||
factory UpdateReleaseRequest.fromJson(Json json) =>
|
||||
_$UpdateReleaseRequestFromJson(json);
|
||||
|
||||
/// Converts a [UpdateReleaseRequest] to a Map<String, dynamic>.
|
||||
Json toJson() => _$UpdateReleaseRequestToJson(this);
|
||||
|
||||
/// The desired status of the release.
|
||||
final ReleaseStatus status;
|
||||
|
||||
/// The platform of the release.
|
||||
final String platform;
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// 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 'update_release_request.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
UpdateReleaseRequest _$UpdateReleaseRequestFromJson(
|
||||
Map<String, dynamic> json) =>
|
||||
$checkedCreate(
|
||||
'UpdateReleaseRequest',
|
||||
json,
|
||||
($checkedConvert) {
|
||||
final val = UpdateReleaseRequest(
|
||||
status: $checkedConvert(
|
||||
'status', (v) => $enumDecode(_$ReleaseStatusEnumMap, v)),
|
||||
platform: $checkedConvert('platform', (v) => v as String),
|
||||
);
|
||||
return val;
|
||||
},
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$UpdateReleaseRequestToJson(
|
||||
UpdateReleaseRequest instance) =>
|
||||
<String, dynamic>{
|
||||
'status': _$ReleaseStatusEnumMap[instance.status]!,
|
||||
'platform': instance.platform,
|
||||
};
|
||||
|
||||
const _$ReleaseStatusEnumMap = {
|
||||
ReleaseStatus.draft: 'draft',
|
||||
ReleaseStatus.active: 'active',
|
||||
};
|
||||
@@ -7,6 +7,7 @@ export 'patch.dart';
|
||||
export 'patch_artifact.dart';
|
||||
export 'release.dart';
|
||||
export 'release_artifact.dart';
|
||||
export 'release_status.dart';
|
||||
export 'shorebird_plan.dart';
|
||||
export 'subscription.dart';
|
||||
export 'user.dart';
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/// The status of a release.
|
||||
enum ReleaseStatus {
|
||||
/// Indicates that the release has been created, but not all platform
|
||||
/// artifacts have been uploaded.
|
||||
draft,
|
||||
|
||||
/// Indicates that all platform artifacts have been uploaded for this release.
|
||||
active;
|
||||
|
||||
/// Returns the [ReleaseStatus] with the given [name].
|
||||
factory ReleaseStatus.named(String name) =>
|
||||
ReleaseStatus.values.firstWhere((status) => status.name == name);
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
group(UpdateReleaseRequest, () {
|
||||
test('can be (de)serialized', () {
|
||||
const request = UpdateReleaseRequest(
|
||||
platform: 'android',
|
||||
status: ReleaseStatus.active,
|
||||
);
|
||||
expect(
|
||||
UpdateReleaseRequest.fromJson(request.toJson()).toJson(),
|
||||
equals(request.toJson()),
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
void main() {
|
||||
group(ReleaseStatus, () {
|
||||
test('named allows lookup based on name', () {
|
||||
expect(ReleaseStatus.named('draft'), equals(ReleaseStatus.draft));
|
||||
expect(ReleaseStatus.named('active'), equals(ReleaseStatus.active));
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user