134 lines
3.5 KiB
Dart
134 lines
3.5 KiB
Dart
import 'dart:convert';
|
|
|
|
import 'package:libac_dart/discord/user.dart';
|
|
|
|
class ApplicationPacket {
|
|
bool botPublic;
|
|
bool botRequiresCodeGrant;
|
|
String coverImage;
|
|
String description;
|
|
String guildId;
|
|
String? icon;
|
|
String id;
|
|
Map<String, ApplicationIntegrationType> integrationConfig;
|
|
String name;
|
|
User? owner;
|
|
|
|
ApplicationPacket(
|
|
{required this.botPublic,
|
|
required this.botRequiresCodeGrant,
|
|
required this.coverImage,
|
|
required this.description,
|
|
required this.guildId,
|
|
required this.id,
|
|
required this.integrationConfig,
|
|
required this.name,
|
|
this.icon,
|
|
this.owner});
|
|
|
|
Map<String, dynamic> toJson() {
|
|
Map<String, dynamic> itc = {};
|
|
|
|
for (MapEntry<String, ApplicationIntegrationType> entry
|
|
in integrationConfig.entries) {
|
|
itc[entry.key] = entry.value.toJson();
|
|
}
|
|
|
|
return {
|
|
"bot_public": botPublic,
|
|
"bot_require_code_grant": botRequiresCodeGrant,
|
|
"cover_image": coverImage,
|
|
"description": description,
|
|
"guild_id": guildId,
|
|
"icon": icon,
|
|
"id": id,
|
|
"integration_types_config": itc,
|
|
"name": name,
|
|
"owner": owner.toJson()
|
|
};
|
|
}
|
|
|
|
String encode() {
|
|
return json.encode(toJson());
|
|
}
|
|
|
|
factory ApplicationPacket.fromJson(String js) {
|
|
return ApplicationPacket.decode(json.decode(js));
|
|
}
|
|
|
|
factory ApplicationPacket.decode(Map<String, dynamic> js) {
|
|
var itc = {};
|
|
var itc_js = js["integration_types_config"] as Map<String, dynamic>;
|
|
for (MapEntry<String, dynamic> jsx in itc_js.entries) {
|
|
itc[jsx.key] =
|
|
ApplicationIntegrationType.decode(jsx.value as Map<String, dynamic>);
|
|
}
|
|
|
|
return ApplicationPacket(
|
|
botPublic: js['bot_public'] as bool,
|
|
botRequiresCodeGrant: js['bot_require_code_grant'] as bool,
|
|
coverImage: js['cover_image'] as String,
|
|
description: js['description'] as String,
|
|
guildId: js['guild_id'] as String,
|
|
id: js['id'] as String,
|
|
integrationConfig: itc as Map<String, ApplicationIntegrationType>,
|
|
name: js['name'] as String,
|
|
owner: User.decode(js['owner']),
|
|
icon: js['icon']);
|
|
}
|
|
}
|
|
|
|
class OAuth2InstallParams {
|
|
List<String> scopes;
|
|
String permissions;
|
|
|
|
OAuth2InstallParams({required this.scopes, required this.permissions});
|
|
|
|
String encode() {
|
|
return json.encode(toJson());
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {"scopes": scopes, "permissions": permissions};
|
|
}
|
|
|
|
factory OAuth2InstallParams.fromJson(String js) {
|
|
return OAuth2InstallParams.decode(json.decode(js));
|
|
}
|
|
|
|
factory OAuth2InstallParams.decode(Map<String, dynamic> js) {
|
|
return OAuth2InstallParams(
|
|
scopes: js['scopes'] as List<String>,
|
|
permissions: js['permissions'] as String);
|
|
}
|
|
}
|
|
|
|
class ApplicationIntegrationType {
|
|
OAuth2InstallParams? installParams;
|
|
|
|
ApplicationIntegrationType({this.installParams});
|
|
|
|
String encode() {
|
|
return json.encode(toJson());
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {"oauth2_install_params": installParams};
|
|
}
|
|
|
|
factory ApplicationIntegrationType.fromJson(String js) {
|
|
Map<String, dynamic> jd = json.decode(js);
|
|
return ApplicationIntegrationType.decode(jd);
|
|
}
|
|
|
|
factory ApplicationIntegrationType.decode(Map<String, dynamic> js) {
|
|
ApplicationIntegrationType ait = ApplicationIntegrationType();
|
|
if (js["oauth2_install_params"] == null) {
|
|
ait = ApplicationIntegrationType(
|
|
installParams:
|
|
OAuth2InstallParams.decode(js['oauth2_install_params']));
|
|
}
|
|
|
|
return ait;
|
|
}
|
|
}
|