using System.Collections.Generic; using System.Threading.Tasks; using xCommons.Extensions; using xHttpService.Constants; using xHttpService.Extensions; using xIdentityModels.Constants; using xIdentityModels.Dtos; using xIdentityModels.Models; using xIdentityModels.Navigations; using xIdentityService.Constants; using xModels.Dtos; namespace xIdentityService.Providers { public partial class XIdentityProvider { // #region Friendship ... /// /// Follow a User /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollowing public async Task Follow( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.Follow, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); return response; } /// /// Cancel Following Request /// /// Authentication Tokens /// a user identifier which represent destination user /// a boolean value public async Task Cancel( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.Cancel, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); return response; } /// /// Unfollow a Follower /// /// Authentication Tokens /// a user identifier which represent destination user /// public async Task UnFollowFollower( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.UnFollowFollower, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); } /// /// Unfollow Following /// /// Authentication Tokens /// a user identifier which represent destination user /// public async Task UnFollowFollowing( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.UnFollowFollowing, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); } /// /// Block a Follower /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollowing public async Task Block( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.Block, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); return response; } /// /// Unblock a Blocked User /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollowing public async Task UnBlock( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.UnBlock, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); return response; } /// /// Accept a Following Request /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollower public async Task AcceptRequest( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.AcceptRequest, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); return response; } /// /// Reject a Following Request /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollower public async Task RejectRequest( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.RejectRequest, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.POST ); return response; } /// /// Get Friendship Info Model between Specific User and Current User /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipInfoDto public async Task GetFriendshipInfo( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.FriendshipInfo, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Check a User IsFollower of Requested User /// /// Authentication Tokens /// a user identifier which represent destination user /// a boolean value public async Task IsFollower( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.IsFollower, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Get Specific Follower /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollower public async Task GetFollower( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.Follower, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Get Follower State of a User /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipState public async Task GetFollowerState( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.FollowerState, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Get Followers List Of Current User /// /// Authentication Tokens /// a collection of XFriendshipFollower public async Task> GetFollowers( XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.Followers); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Get All Followers List Includes Blocked, Requested and etc /// of Current User /// /// Authentication Tokens /// a collection of XFriendshipFollower public async Task> GetAllFollowers( XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.AllFollowers); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Return Followers UserName's List of Current User /// /// Authentication Tokens /// a collection of UserNames public async Task> GetFollowersList( XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.FollowersList); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Retrieve All User's Followers based on Query Model ... /// /// Query Model Descriptor /// Dest User for Reading Followers /// Requester User's Descriptor /// public async Task> QueryFollowers( XQuery query, string destUser, XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(destUser) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.QueryFollowers); // // Attach XQuery to Request ... request = request.AttachXQuery(query); request = request.AttachDestUser(destUser); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Check a User is in Followings of Current User /// /// Authentication Tokens /// a user identifier which represent destination user /// a boolean value public async Task IsFollowing( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.IsFollowing, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Get Specific Following Model /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipFollowing public async Task GetFollowing( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.Following, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Get Following State Relation between Specific User /// and Current User /// /// Authentication Tokens /// a user identifier which represent destination user /// an instance of XFriendshipState public async Task GetFollowingState( XTokenResponse tokens, string destUser ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty( destUser, tokens.AccessToken ) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet( XApiAccountEndpoint.FollowingState, @params: new Dictionary { { XParam.XDestUser.GetStringValue (), destUser } } ); // var response = await RunRestRequest( client, request, XHttpMethod.GET ); return response; } /// /// Get Followings of Current User /// /// Authentication Tokens /// a collection of XFriendshipFollowing public async Task> GetFollowings( XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.Followings); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Get All Following List Includes Blocked, Requested and etc /// of Current User /// /// Authentication Tokens /// a collection of XFriendshipFollowing public async Task> GetAllFollowings( XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.AllFollowings); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Return Following UserName's List of Current User /// /// Authentication Tokens /// a collection of UserNames public async Task> GetFollowingList( XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.FollowingsList); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } /// /// Retrieve All User's Followings based on Query Model ... /// /// Query Model Descriptor /// Dest User for Reading Followers /// Requester User's Descriptor /// public async Task> QueryFollowings( XQuery query, string destUser, XTokenResponse tokens ) { // // Validate Args ... await validationProvider .GroupValidationBuilder() .AddNotNull(tokens) .AddNotEmpty(destUser) .AddNotEmpty(tokens.AccessToken) .ValidateGroupAsync(); // var client = GetRestClient(tokens); // var request = GetRestRequet(XApiAccountEndpoint.QueryFollowings); // // Attach XQuery to Request ... request = request.AttachXQuery(query); // var response = await RunRestRequest>( client, request, XHttpMethod.GET ); return response; } #endregion } }