using System.Collections.Generic; using System.Threading.Tasks; using xCommons.Extensions; using xHttpService.Constants; using xIdentityModels.Constants; using xIdentityModels.Dtos; using xIdentityModels.Models; using xIdentityModels.Navigations; using xIdentityService.Constants; 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; } /// /// 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; } /// /// 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; } /// /// 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; } /// /// 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; } #endregion } }