2using System.Collections;
3using System.Collections.Generic;
5using System.Threading.Tasks;
73 else if (ContentType.StartsWith(
"application/") && ContentType.EndsWith(
"+json"))
95 public Task<object>
DecodeAsync(
string ContentType,
byte[] Data, Encoding Encoding, KeyValuePair<string, string>[] Fields, Uri BaseUri)
109 if (
string.Compare(FileExtension,
"json",
true) == 0)
129 ContentType = ContentType.ToLower();
133 FileExtension =
"json";
136 else if (ContentType.StartsWith(
"application/") && ContentType.EndsWith(
"+json"))
138 FileExtension = ContentType.Substring(12, ContentType.Length - 5 - 12);
143 FileExtension =
string.Empty;
159 if (Object is IEnumerable<KeyValuePair<string, object>>)
166 Grade = Hint.CanEncodeJson;
169 else if (Object is
null ||
170 Object is IEnumerable ||
204 public Task<KeyValuePair<byte[], string>>
EncodeAsync(
object Object, Encoding Encoding, params
string[] AcceptedContentTypes)
209 if (Encoding is
null)
211 Encoding = Encoding.UTF8;
212 ContentType +=
"; charset=utf-8";
215 ContentType +=
"; charset=" + Encoding.WebName;
217 return Task.FromResult(
new KeyValuePair<
byte[],
string>(Encoding.GetBytes(Json), ContentType));
Helps with parsing of commong data types.
static string GetString(byte[] Data, Encoding DefaultEncoding)
Gets a string from its binary representation, taking any Byte Order Mark (BOM) into account.
Static class managing encoding and decoding of internet content.
static bool IsAccepted(string ContentType, params string[] AcceptedContentTypes)
Checks if a given content type is acceptable.
Helps with common JSON-related tasks.
static object Parse(string Json)
Parses a JSON string.
static string Encode(string s)
Encodes a string for inclusion in JSON.
const string DefaultContentType
application/json
bool TryGetFileExtension(string ContentType, out string FileExtension)
Tries to get the file extension of an item, given its Content-Type.
const string DefaultFileExtension
json
bool Decodes(string ContentType, out Grade Grade)
If the decoder decodes an object with a given content type.
Task< object > DecodeAsync(string ContentType, byte[] Data, Encoding Encoding, KeyValuePair< string, string >[] Fields, Uri BaseUri)
Decodes an object.
static readonly string[] JsonContentTypes
JSON content types.
bool Encodes(object Object, out Grade Grade, params string[] AcceptedContentTypes)
If the encoder encodes a given object.
string[] FileExtensions
Supported file extensions.
Task< KeyValuePair< byte[], string > > EncodeAsync(object Object, Encoding Encoding, params string[] AcceptedContentTypes)
Encodes an object.
static readonly string[] JsonFileExtensions
JSON file extensions.
string[] ContentTypes
Supported content types.
bool TryGetContentType(string FileExtension, out string ContentType)
Tries to get the content type of an item, given its file extension.
Basic interface for Internet Content decoders. A class implementing this interface and having a defau...
Basic interface for Internet Content encoders. A class implementing this interface and having a defau...
Provides a JSON Encoding hint for an object that implements this interface.
Basic interface for vectors.