/// <summary> /// Clear resource data by using /privateapi/{0}/bulk-delete /// </summary> /// <typeparam name="T"></typeparam> /// <param name="idList"></param> /// <param name="queueTime">second</param> public static void ClearResourceData <T>(ISession <PrivateAuthentication> session, List <string> idList, int queueTime = 0) where T : ResourceBase { Log.Info("Starting to delete {0} resource", typeof(T).Name); // Verify list is Empty before executing Bulk Delete if (idList.Count == 0) { Log.Info("Empty list, nothing to process"); } else { try { var request = ResourceRequest.DeleteRecords().Append( typeof(T).Name.ToResourceId(), idList.Select(ulong.Parse).ToArray()); DeleteRecordResponse response = session.Call(request); } catch (Exception e) { Log.Error(e); Log.Warn("Some resources are probably not deleted."); } } }
public async Task AfterTest(ISession <PrivateAuthentication> session, ITest test) { if (toDelete.Count > 0) { var req = ((DeleteRecordRequest.IBuilderWithData)toDelete.Aggregate(ResourceRequest.DeleteRecords(), (builder, pair) => builder.Append(pair.Item1, pair.Item2))).Build(); try { await session.CallAsync(req); } finally { toDelete.Clear(); } } }
public void TearDown() { Log.PrintTestFixtureTearDown(); using (var session = TestBase.PrivateAuthentication.GetPrivateSession(AuthenticationInfoProvider.Current.DefaultCompanyName, AuthenticationInfoProvider.Current.DefaultUserLogin, AuthenticationInfoProvider.Current.DefaultUserPassword)) { foreach (var item in PublicApiGeneratedRecordIds.Reverse()) { var request = ResourceRequest.DeleteRecords().Append( item.Key.ToString().ToResourceId(), item.Value.Select((x) => Convert.ToUInt64(x)).ToArray()); DeleteRecordResponse response = session.Call(request); } } }
internal static async Task DeleteRecords(ISession <PrivateAuthentication> session, ITest test, HrbcRecordCreator.IRecordEntries records) { if (records == null) { return; } var builder = ResourceRequest.DeleteRecords(); foreach (var entry in records.GroupBy(entry => entry.Value.ResourceType, entry => entry.Value.Id)) { builder = builder.Append((ResourceId)(int)entry.Key, entry.ToList()); } foreach (var entry in records.Other) { builder = builder.Append((ResourceId)(int)entry.ResourceType, entry.Id); } await session.CallAsync((DeleteRecordRequest.IBuilderWithData) builder); }
internal static Func <ISession <PrivateAuthentication>, ITest, Task <IRecordEntries> > CreateRecords(Func <IRequest <CreateRecordRequest, CreateRecordResponse> > requestSupplier) { return(async(session, test) => { var request = requestSupplier(); var response = await session.CallAsync(request); var contentResource = request.Content.Data.ToDictionary(content => content.Id, content => (Enums.ResourceType)(int) content.Resource); if (response.Errors.Count > 0) { try { if (response.RecordIds.Count > 0) { await session.CallAsync((DeleteRecordRequest.IBuilderWithData) response.RecordIds.Aggregate(ResourceRequest.DeleteRecords(), (delete, entry) => delete.Append((ResourceId)contentResource[entry.Key], entry.Value))); } } catch (Exception) { /* gulp delete errors */ } throw new Exception(response.Errors.Select(c => c.Value.FlatView.Select(entry => $"{entry.Key}: {entry.Value.Message}").Aggregate($"{contentResource[c.Key]}", (a, b) => $"{a},{b}")).Aggregate("Errors were detected during creation of records:", (a, b) => $"{a},{b}")); } // create reference dict var entries = request.Content.References .ToDictionary(entry => entry.Key, entry => new HrbcRecordReference { Id = response.RecordIds[entry.Value], ResourceType = contentResource[entry.Value] }); var guidWithKeys = new HashSet <Guid>(request.Content.References.Values); // collect other results var other = from record in response.RecordIds where !guidWithKeys.Contains(record.Key) select new HrbcRecordReference { Id = record.Value, ResourceType = contentResource[record.Key] }; return new RecordEntriesImpl(entries, other); }); }