in src/Custom/VectorStores/Internal/Pagination/VectorStoreCollectionPageToken.cs [65:129]
public static VectorStoreCollectionPageToken FromToken(ContinuationToken pageToken)
{
if (pageToken is VectorStoreCollectionPageToken token)
{
return token;
}
BinaryData data = pageToken.ToBytes();
if (data.ToMemory().Length == 0)
{
throw new ArgumentException("Failed to create VectorStoresPageToken from provided pageToken.", nameof(pageToken));
}
Utf8JsonReader reader = new(data);
int? limit = null;
string? order = null;
string? after = null;
string? before = null;
reader.Read();
Debug.Assert(reader.TokenType == JsonTokenType.StartObject);
while (reader.Read())
{
if (reader.TokenType == JsonTokenType.EndObject)
{
break;
}
Debug.Assert(reader.TokenType == JsonTokenType.PropertyName);
string propertyName = reader.GetString()!;
switch (propertyName)
{
case "limit":
reader.Read();
Debug.Assert(reader.TokenType == JsonTokenType.Number);
limit = reader.GetInt32();
break;
case "order":
reader.Read();
Debug.Assert(reader.TokenType == JsonTokenType.String);
order = reader.GetString();
break;
case "after":
reader.Read();
Debug.Assert(reader.TokenType == JsonTokenType.String);
after = reader.GetString();
break;
case "before":
reader.Read();
Debug.Assert(reader.TokenType == JsonTokenType.String);
before = reader.GetString();
break;
default:
throw new JsonException($"Unrecognized property '{propertyName}'.");
}
}
return new(limit, order, after, before);
}