-
Notifications
You must be signed in to change notification settings - Fork 6
/
Sample18_GetDataSource.cs
135 lines (116 loc) · 4.96 KB
/
Sample18_GetDataSource.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
// <copyright file="Sample18_GetDataSource.cs" company="Relativity ODA LLC">
// © Relativity All Rights Reserved.
// </copyright>
namespace Relativity.Import.Samples.DotNetClient.SampleCollection
{
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using Relativity.Import.Samples.DotNetClient.Helpers;
using Relativity.Import.V1;
using Relativity.Import.V1.Builders.DataSource;
using Relativity.Import.V1.Builders.Documents;
using Relativity.Import.V1.Models;
using Relativity.Import.V1.Models.Settings;
/// <summary>
/// Class containing examples of using import service SDK.
/// </summary>
public partial class ImportServiceSample
{
/// <summary>
/// Example of reading data source Ids.
/// </summary>
/// <returns>A <see cref="Task"/> representing the result of the asynchronous operation.</returns>
public async Task Sample18_GetDataSource()
{
Console.WriteLine($"Running {nameof(this.Sample18_GetDataSource)}");
// GUID identifiers for import job and data source.
Guid importId = Guid.NewGuid();
// Destination workspace artifact Id.
const int workspaceId = 1000000;
// set of columns indexes in load file used in import settings.
const int controlNumberColumnIndex = 0;
const int dataSourceCount = 10;
const int filePathColumnIndex = 11;
const int fileNameColumnIndex = 13;
// Configuration settings for document import. Builder is used to create settings.
ImportDocumentSettings importSettings = ImportDocumentSettingsBuilder.Create()
.WithAppendMode()
.WithNatives(x => x
.WithFilePathDefinedInColumn(filePathColumnIndex)
.WithFileNameDefinedInColumn(fileNameColumnIndex))
.WithoutImages()
.WithFieldsMapped(x => x
.WithField(controlNumberColumnIndex, "Control Number"))
.WithoutFolders();
// Create payload for request.
var importSettingPayload = new { importSettings };
HttpClient httpClient = HttpClientHelper.CreateHttpClient();
// Create payload for request.
var createJobPayload = new
{
applicationName = "Import-service-sample-app",
correlationID = $"Sample-job-0018",
};
// Create import job.
// endpoint: POST /import-jobs/{importId}
var createImportJobUri = RelativityImportEndpoints.GetImportJobCreateUri(workspaceId, importId);
var response = await httpClient.PostAsJsonAsync(createImportJobUri, createJobPayload);
await ImportJobSampleHelper.EnsureSuccessResponse(response);
// Add import document settings to existing import job (configure import job).
// endpoint: POST /import-jobs/{importId}/documents-configurations
var documentConfigurationUri = RelativityImportEndpoints.GetDocumentConfigurationUri(workspaceId, importId);
response = await httpClient.PostAsJsonAsync(documentConfigurationUri, importSettingPayload);
await ImportJobSampleHelper.EnsureSuccessResponse(response);
// Add n data sources to the existing job.
for (int i = 0; i < dataSourceCount; i++)
{
Guid dataSourceId = Guid.NewGuid();
var dataSourceSettings = DataSourceSettingsBuilder.Create()
.ForLoadFile($"host/Sample18/loadFile{i}")
.WithDefaultDelimiters()
.WithFirstLineContainingHeaders()
.WithEndOfLineForWindows()
.WithStartFromBeginning()
.WithDefaultEncoding()
.WithDefaultCultureInfo();
// Create payload for request.
var dataSourceSettingsPayload = new { dataSourceSettings };
// Add data source settings to existing import job.
// endpoint: POST /import-jobs/{importId}/sources/{sourceId}
var importSourceUri = RelativityImportEndpoints.GetImportSourceUri(workspaceId, importId, dataSourceId);
response = await httpClient.PostAsJsonAsync(importSourceUri, dataSourceSettingsPayload);
await ImportJobSampleHelper.EnsureSuccessResponse(response);
}
// Read collection of data sources for particular import job.
var importSourcesUri = RelativityImportEndpoints.GetImportSourcesForJobUri(workspaceId, importId);
ValueResponse<DataSources>? valueResponse =
await httpClient.GetFromJsonAsync<ValueResponse<DataSources>>(importSourcesUri);
if (valueResponse is { IsSuccess: true })
{
Console.WriteLine($"Data Sources total count: {valueResponse.Value.TotalCount}");
Console.WriteLine($"Data source Ids:");
foreach (var source in valueResponse.Value.Sources)
{
Console.WriteLine(source);
}
}
}
}
}
/* Example of console result:
Response.IsSuccess: True
Data Sources total count: 10
Data source Ids:
21b918c4-4bbf-4e1b-b90a-953e23721aa5
30386162-ad65-434f-9f01-b898b092e0f4
36b3f57e-c0d2-462d-bd86-13e1fbb7ff9c
44e7eeb3-ef83-4dc0-83d2-8cfcec1ee366
45eeb401-0e22-420a-8a8d-206b4a3c1dc8
988b7d83-e9b2-436c-b742-d5bd6fc57960
b32fcf4d-08f0-4220-a6a4-e16864ec84f1
bfd59462-e60d-4459-a964-8c85f82f1d9e
d74abffb-34a5-4efe-9b4b-01774e5ccfcf
f05de81a-18c0-4bb8-b19b-52fd080187ac
*/