selfprivacy.org.app/lib/logic/models/json/digital_ocean_server_info.dart
NaiJi ✨ 6819192219 feat: Add country names to installation process (#501)
Fixes #494

Reviewed-on: https://git.selfprivacy.org/SelfPrivacy/selfprivacy.org.app/pulls/501
Reviewed-by: Inex Code <inex.code@selfprivacy.org>
Co-authored-by: NaiJi  <naiji@noreply.git.selfprivacy.org>
Co-committed-by: NaiJi  <naiji@noreply.git.selfprivacy.org>
2024-04-24 12:54:32 +03:00

148 lines
2.7 KiB
Dart

import 'package:json_annotation/json_annotation.dart';
part 'digital_ocean_server_info.g.dart';
@JsonSerializable()
class DigitalOceanVolume {
DigitalOceanVolume(
this.id,
this.name,
this.sizeGigabytes,
this.dropletIds,
);
final String id;
final String name;
@JsonKey(name: 'droplet_ids')
final List<int>? dropletIds;
@JsonKey(name: 'size_gigabytes')
final int sizeGigabytes;
static DigitalOceanVolume fromJson(final Map<String, dynamic> json) =>
_$DigitalOceanVolumeFromJson(json);
}
@JsonSerializable()
class DigitalOceanLocation {
DigitalOceanLocation(
this.slug,
this.name,
);
final String slug;
final String name;
static DigitalOceanLocation fromJson(final Map<String, dynamic> json) =>
_$DigitalOceanLocationFromJson(json);
String get flag {
String emoji = '';
switch (slug.substring(0, 3)) {
case 'fra':
emoji = '🇩🇪';
break;
case 'ams':
emoji = '🇳🇱';
break;
case 'sgp':
emoji = '🇸🇬';
break;
case 'lon':
emoji = '🇬🇧';
break;
case 'tor':
emoji = '🇨🇦';
break;
case 'blr':
emoji = '🇮🇳';
break;
case 'syd':
emoji = '🇦🇺';
break;
case 'nyc':
case 'sfo':
emoji = '🇺🇸';
break;
}
return emoji;
}
String get countryDisplayKey {
String displayKey = 'countries.';
switch (slug.substring(0, 3)) {
case 'fra':
displayKey += 'germany';
break;
case 'ams':
displayKey += 'netherlands';
break;
case 'sgp':
displayKey += 'singapore';
break;
case 'lon':
displayKey += 'united_kingdom';
break;
case 'tor':
displayKey += 'canada';
break;
case 'blr':
displayKey += 'india';
break;
case 'syd':
displayKey += 'australia';
break;
case 'nyc':
case 'sfo':
displayKey += 'united_states';
break;
default:
displayKey = slug;
}
return displayKey;
}
}
@JsonSerializable()
class DigitalOceanServerType {
DigitalOceanServerType(
this.regions,
this.memory,
this.description,
this.disk,
this.priceMonthly,
this.slug,
this.vcpus,
);
final List<String> regions;
final double memory;
final String slug;
final String description;
final int vcpus;
final int disk;
@JsonKey(name: 'price_monthly')
final double priceMonthly;
static DigitalOceanServerType fromJson(final Map<String, dynamic> json) =>
_$DigitalOceanServerTypeFromJson(json);
}