// TODO Setup Cancellation Token public static async Task <PaginatedCollection <T> > InstantiateSearch(string haystack, string needle, CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = typeof(T).GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetPaginatedSearchRoute(haystack, needle); PaginatedCollection <T> book = new PaginatedCollection <T>(url); Page <T> firstPage = new Page <T>(book.BaseURL, 1); await firstPage.GetDataOrInitializeAsync(); book.PageCount = (int)firstPage.TotalPageCount; book.Pages = new List <Page <T> >(book.PageCount) { firstPage }; if (book.PageCount > 1) { for (int i = 2; i <= book.PageCount; i++) { book.Pages.Add(new Page <T>(book.BaseURL, i)); } } return(book); }
public static async Task <PaginatedCollection <G> > GetRelatedModelPaginationAsync <G>(string relation, int?id, CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = typeof(T).GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetRelationshipRoute(id, relation); RestRequest request = new RestRequest(url, Method.GET, DataFormat.Json); IRestResponse <PaginatedCollection <G> > restResponse = await DataConnection.RequestAsync <PaginatedCollection <G> >(request, cancellationToken); return(restResponse.Data); }
public virtual async Task <bool> DeleteAsync(CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = this.GetType().GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetSingularRoute(ID); RestRequest request = new RestRequest(url, Method.DELETE, DataFormat.Json); IRestResponse <T> restResponse = await DataConnection.RequestAsync <T>(request, cancellationToken); return(restResponse.IsSuccessful); }
public static async Task <List <T> > SearchAsync(string haystack, string needle, CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = typeof(T).GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetSearchRoute(haystack, needle); RestRequest request = new RestRequest(url, Method.GET, DataFormat.Json); IRestResponse <List <T> > restResponse = await DataConnection.RequestAsync <List <T> >(request, cancellationToken); return(restResponse.Data); }
public static async Task <T> GetAsync(int id, CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = typeof(T).GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetSingularRoute(id); RestRequest request = new RestRequest(url, Method.GET, DataFormat.Json); IRestResponse <T> restResponse = await DataConnection.RequestAsync <T>(request, cancellationToken); return(restResponse.Data); }
public virtual async Task <G> PostRelatedAsync <G>(string relation, int?id, CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = typeof(T).GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetRelationshipRoute(id, relation); RestRequest request = new RestRequest(url, Method.POST, DataFormat.Json); request.AddJsonBody(this); IRestResponse <G> restResponse = await DataConnection.RequestAsync <G>(request, cancellationToken); return(restResponse.Data); }
public virtual async Task <T> UpdateAsync(CancellationToken cancellationToken = default) { RouteAttribute routeAttribute = this.GetType().GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute; string url = routeAttribute.GetSingularRoute(ID); RestRequest request = new RestRequest(url, Method.PUT, DataFormat.Json); request.AddJsonBody(this); IRestResponse <T> restResponse = await DataConnection.RequestAsync <T>(request, cancellationToken); this.UpdatedAt = (restResponse.Data as DataPacket <T>).UpdatedAt; return(restResponse.Data); }