96 lines
3.3 KiB
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;
|
|
}
|
|
}
|