LibAC-dart/lib/discord/networking/sticker.dart

96 lines
3.3 KiB
Dart

import 'dart:convert';
import 'dart:typed_data';
import 'package:dio/dio.dart';
import 'package:libac_dart/discord/networking/endpoints.dart';
import 'package:libac_dart/structs/Snowflake.dart';
import '../structures/sticker.dart';
class StickerPackets {
static Future<Sticker> getSticker(Snowflake id) async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var reply = await dio.get(
"${DiscordEndpoints.BaseURL}${DiscordEndpoints.Stickers}/${id.toString()}");
return Sticker.fromJson(reply.data);
}
static Future<List<StickerPack>> getStickerPacks() async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var reply = await dio
.get("${DiscordEndpoints.BaseURL}${DiscordEndpoints.StickerPacks}");
List<StickerPack> stickerPacks = [];
var js = json.decode(reply.data);
var jsStickerPacks = js['sticker_packs'];
for (var entry in jsStickerPacks) {
stickerPacks.add(StickerPack.decode(entry));
}
return stickerPacks;
}
static Future<List<Sticker>> getGuildStickers(Snowflake guildId) async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var reply = await dio.get(
"${DiscordEndpoints.BaseURL}${DiscordEndpoints.Guilds}${guildId.toString()}${DiscordEndpoints.Stickers}");
List<Sticker> stickers = [];
for (var entry in json.decode(reply.data)) {
stickers.add(Sticker.decode(entry));
}
return stickers;
}
static Future<Sticker> getGuildSticker(
Snowflake guildId, Snowflake id) async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var reply = await dio.get(
"${DiscordEndpoints.BaseURL}${DiscordEndpoints.Guilds}${guildId.toString()}${DiscordEndpoints.Stickers}/${id.toString()}");
return Sticker.fromJson(reply.data);
}
static Future<Sticker> createGuildSticker(Snowflake guildId, String name,
String description, String tags, Uint8List fileContents) async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var fd = FormData.fromMap({
"name": name,
"description": description,
"tags": tags,
"file": MultipartFile.fromBytes(fileContents)
});
var reply = await dio.post(
"${DiscordEndpoints.BaseURL}${DiscordEndpoints.Guilds}/${guildId.toString()}${DiscordEndpoints.Stickers}",
options: Options(contentType: "multipart/form-data"),
data: fd);
return Sticker.fromJson(reply.data);
}
static Future<Sticker> updateGuildSticker(Snowflake guildId,
Snowflake stickerId, String name, String description, String tags) async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var reply = await dio.patch(
"${DiscordEndpoints.BaseURL}${DiscordEndpoints.Guilds}/${guildId.toString()}${DiscordEndpoints.Stickers}/${stickerId.toString()}",
data: json
.encode({"name": name, "description": description, "tags": tags}));
return Sticker.fromJson(reply.data);
}
static Future<bool> deleteGuildSticker(
Snowflake guildId, Snowflake stickerId) async {
Dio dio = Dio(DiscordSessionSettings.getOptions);
var reply = await dio.delete(
"${DiscordEndpoints.BaseURL}/${guildId.toString()}${DiscordEndpoints.Stickers}/${stickerId.toString()}");
if (reply.statusCode == 204) {
return false;
} else
return true;
}
}