using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using GraphQL; namespace Speckle.Core.Api; public partial class Client { /// /// Gets the currently active user profile. /// /// /// public async Task ActiveUserGet(CancellationToken cancellationToken = default) { var request = new GraphQLRequest { Query = @"query User { activeUser { id, email, name, bio, company, avatar, verified, profiles, role, } }" }; return (await ExecuteGraphQLRequest(request, cancellationToken).ConfigureAwait(false)).activeUser; } /// /// Get another user's profile by its user id. /// /// Id of the user you are looking for /// /// public async Task OtherUserGet(string id, CancellationToken cancellationToken = default) { var request = new GraphQLRequest { Query = @"query LimitedUser($id: String!) { otherUser(id: $id){ id, name, bio, company, avatar, verified, role, } }", Variables = new { id } }; return (await ExecuteGraphQLRequest(request, cancellationToken).ConfigureAwait(false)).otherUser; } /// /// Searches for a user on the server. /// /// String to search for. Must be at least 3 characters /// Max number of users to return /// public async Task> UserSearch( string query, int limit = 10, CancellationToken cancellationToken = default ) { var request = new GraphQLRequest { Query = @"query UserSearch($query: String!, $limit: Int!) { userSearch(query: $query, limit: $limit) { cursor, items { id name bio company avatar verified role } } }", Variables = new { query, limit } }; return (await ExecuteGraphQLRequest(request, cancellationToken).ConfigureAwait(false)) .userSearch .items; } }