LibAC-dart/lib/discord/application.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;
}
}