private static IRestResponse <T> AuthorizedMethods <T>(IAuthorizable authorizable, IRestRequest request, Method method) { if (!authorizable.IsAuthenticated) { ClearAuthHeader(request); authorizable.Authorize(); } var response = GetResponse <T>(authorizable.Client, request, method); if (response.IsSuccessful) { return(response); } if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized) { ClearAuthHeader(request); authorizable.IsAuthenticated = false; authorizable.Authorize(); response = GetResponse <T>(authorizable.Client, request, method); } return(response); }
public Faceit(IAuthorizable authorizable) { if (authorizable == null) { throw new ArgumentException($"IAuthorizable authorizable on {GetType().FullName} cannot be null"); } Authorizable = authorizable; }
public HttpResponseMessage SendRequest(string url, IAuthorizable authorizable) { HttpRequestMessage request = new HttpRequestMessage(); request.Headers.Add(authorizable.GetHeaderName(), authorizable.GetBearer()); request.Headers.Add(ContentType, MimeContentType); request.RequestUri = new Uri(url); request.Method = HttpMethod; HttpClient httpClient = new HttpClient(); HttpResponseMessage responseMessage = httpClient.SendAsync(request).Result; return(responseMessage); }
/// <summary> /// Checks whether this <see cref="IAuthorizable"/> is granted the given permission. /// </summary> /// <param name="authorizable">The <see cref="IAuthorizable"/> to authorize.</param> /// <param name="permission">The permission to check.</param> /// <returns>Returns <c>true</c> when the sets grant the given permission.</returns> public static bool IsAuthorized(this IAuthorizable authorizable, string permission) { var permissionsSets = new List <Dictionary <string, Permission> >(); switch (authorizable) { case Guest guest: permissionsSets.Add(GroupManager.GetGuestGroup().Permissions); permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue <= GroupManager.GetGuestGroup().SortValue).OrderBy(_ => _.SortValue).Select(_ => _.Permissions)); //if (guest.ActiveChannel != null && guest.ActiveChannel.MemberPermissions.ContainsKey(guest.InternalId)) { // permissionsSets.Add(guest.ActiveChannel.MemberPermissions[guest.InternalId]); //} permissionsSets.Add(guest.Permissions); break; case Member member: permissionsSets.AddRange(member.Groups.OrderBy(_ => _.SortValue).Select(_ => _.Permissions)); if (member.Groups.Count > 0) { permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue <= member.Groups.Select(_ => _.SortValue).Min()).OrderBy(_ => _.SortValue).Select(_ => _.Permissions)); } //if (member.ActiveChannel != null && member.ActiveChannel.MemberPermissions.ContainsKey(member.InternalId)) { // permissionsSets.Add(member.ActiveChannel.MemberPermissions[member.InternalId]); //} permissionsSets.Add(member.Permissions); break; case Group group: permissionsSets.Add(group.Permissions); break; default: return(false); } return(IsAuthorized(permission, permissionsSets.ToArray())); }
/// <summary> /// Returns all permissions granted to the authorizable instance. /// </summary> /// <param name="authorizable">The instance to get all granted permissions from.</param> /// <returns>Returns all granted permissions.</returns> public static Dictionary <string, Permission> GetAllPermissons(this IAuthorizable authorizable) { var permissionsSets = new List <Dictionary <string, Permission> >(); switch (authorizable) { case Guest guest: permissionsSets.Add(GroupManager.GetGuestGroup().Permissions); permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue < GroupManager.GetGuestGroup().SortValue).OrderBy(_ => _.SortValue).Select(_ => _.Permissions)); //if (guest.ActiveChannel != null && guest.ActiveChannel.MemberPermissions.ContainsKey(guest.InternalId)) { // permissionsSets.Add(guest.ActiveChannel.MemberPermissions[guest.InternalId]); //} permissionsSets.Add(guest.Permissions); break; case Member member: permissionsSets.AddRange(member.Groups.OrderBy(_ => _.SortValue).Select(_ => _.Permissions)); if (member.Groups.Count > 0) { permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue < member.Groups.Select(_ => _.SortValue).Min()).OrderBy(_ => _.SortValue).Select(_ => _.Permissions)); } //if (member.ActiveChannel != null && member.ActiveChannel.MemberPermissions.ContainsKey(member.InternalId)) { // permissionsSets.Add(member.ActiveChannel.MemberPermissions[member.InternalId]); //} permissionsSets.Add(member.Permissions); break; default: return(new Dictionary <string, Permission>()); } return(permissionsSets.Aggregate(new Dictionary <string, Permission>(), UnionPermissions)); }
public Hubs(IAuthorizable authorizable) : base(authorizable) { }
public Tournaments(IAuthorizable authorizable) : base(authorizable) { }
public ApiBase(IAuthorizable authorizable) { Authorizable = authorizable; }
public Organizers(IAuthorizable authorizable) : base(authorizable) { }
public Leaderboards(IAuthorizable authorizable) : base(authorizable) { }
public Rankings(IAuthorizable authorizable) : base(authorizable) { }
public Games(IAuthorizable authorizable) : base(authorizable) { }
public Championships(IAuthorizable authorizable) : base(authorizable) { }
public Matches(IAuthorizable authorizable) : base(authorizable) { }
public static IRestResponse <T> AuthorizedPost <T>(this IAuthorizable authorizable, IRestRequest request) { return(AuthorizedMethods <T>(authorizable, request, Method.POST)); }
public Search(IAuthorizable authorizable) : base(authorizable) { }
public Teams(IAuthorizable auth) : base(auth) { }
private bool Authorize(IAuthorizable authorization) { return(authorization.AuthKey == _configuration["ApiAuthorizationKey"]); }
public Players(IAuthorizable authorizable) : base(authorizable) { }