Compare commits
24 Commits
8eabf99616
...
maser
| Author | SHA1 | Date | |
|---|---|---|---|
| 8059ad679e | |||
|
|
137579bbcc | ||
|
|
4aa696410c | ||
|
|
3be920c06a | ||
|
|
4aa4a0add5 | ||
|
|
650f2c58d3 | ||
|
|
8e367e89c4 | ||
|
|
193c2c41cd | ||
|
|
6ee87f8b02 | ||
|
|
8249c99132 | ||
|
|
b1834c3417 | ||
|
|
dc0cfd6010 | ||
|
|
18b3a7dfff | ||
|
|
d9784115ce | ||
|
|
d0ae6c4541 | ||
|
|
e8cffa5fa0 | ||
|
|
39e78821cf | ||
|
|
152b4f7cff | ||
|
|
987cecba4c | ||
|
|
dcaf510bd3 | ||
|
|
71f0919bce | ||
|
|
5062930d5b | ||
|
|
c233ab0ed7 | ||
|
|
0346af5b29 |
@@ -1,6 +1,7 @@
|
||||
using DigitalData.Core.Legacy.Client;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using WindreamHub.Legacy.Client.Route;
|
||||
using WindreamHub.Legacy.Client.Routes;
|
||||
|
||||
namespace WindreamHub.Legacy.Client
|
||||
{
|
||||
@@ -15,7 +16,9 @@ namespace WindreamHub.Legacy.Client
|
||||
})
|
||||
.AddSingleton<WindreamClientService>()
|
||||
.AddSingleton<SubscriptionsRouteService>()
|
||||
.AddSingleton<SystemDetailsRouteService>();
|
||||
.AddSingleton<SystemDetailsRouteService>()
|
||||
.AddSingleton<AuthenticationRouteService>()
|
||||
.AddSingleton<DocumentsRouteService>();
|
||||
|
||||
return services;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Authentication
|
||||
{
|
||||
public class Base64Credential : ICredential
|
||||
{
|
||||
public Base64Credential(string authorizationHeader) => AuthorizationHeader = authorizationHeader;
|
||||
|
||||
public string AuthorizationHeader { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using WindreamHub.Legacy.Client.Models.Shared;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Authentication
|
||||
{
|
||||
public class ErrorDetails
|
||||
{
|
||||
public ErrorItem Item { get; set; }
|
||||
public string Message { get; set; }
|
||||
public int? ErrorCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Authentication
|
||||
{
|
||||
public interface ICredential
|
||||
{
|
||||
string AuthorizationHeader { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using WindreamHub.Legacy.Client.Models.Authentication;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models
|
||||
{
|
||||
public class UserCredential : ICredential
|
||||
{
|
||||
public readonly string Domain;
|
||||
|
||||
public readonly string Name;
|
||||
|
||||
public string AuthorizationHeader { get; }
|
||||
|
||||
public UserCredential(string domain, string name, string password)
|
||||
{
|
||||
Domain = domain;
|
||||
Name = name;
|
||||
AuthorizationHeader = ConvertToBase64(domain, name, password);
|
||||
}
|
||||
|
||||
private static string ConvertToBase64(string domain, string username, string password)
|
||||
{
|
||||
var credentials = $"{domain}\\{username}:{password}";
|
||||
var base64Credentials = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(credentials));
|
||||
return base64Credentials;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Authentication
|
||||
{
|
||||
public class ValidationResponse
|
||||
{
|
||||
public int? UserID { get; set; }
|
||||
public string UserName { get; set; }
|
||||
public string FullUserName { get; set; }
|
||||
public bool? IsValidUser { get; set; }
|
||||
public ErrorDetails Error { get; set; }
|
||||
public List<ErrorDetails> Errors { get; set; }
|
||||
public bool? HasErrors { get; set; }
|
||||
}
|
||||
}
|
||||
13
src/WindreamHub.Legacy.Client/Models/Documents/Flag.cs
Normal file
13
src/WindreamHub.Legacy.Client/Models/Documents/Flag.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents
|
||||
{
|
||||
public enum Flag
|
||||
{
|
||||
CreateObject = 1,
|
||||
CheckIn = 2,
|
||||
CreateNewVersion = 4,
|
||||
UseDefaultLocation = 8,
|
||||
ReturnIndexingDetails = 16,
|
||||
ForceOverwrite = 32,
|
||||
CreateTree = 64
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Request
|
||||
{
|
||||
public class Attribute
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public object Value { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Request.Delete
|
||||
{
|
||||
public class DeleteItem
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Request.Delete
|
||||
{
|
||||
public class DocDeleteBody
|
||||
{
|
||||
public DeleteItem Item { get; set; }
|
||||
public int Flags { get; set; }
|
||||
public int ResponseDetails { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Request
|
||||
{
|
||||
public class DocBody
|
||||
{
|
||||
public Item Item { get; set; }
|
||||
public bool? CreateFolder { get; set; }
|
||||
public int? ResponseDetails { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Request
|
||||
{
|
||||
public class Item
|
||||
{
|
||||
public ObjectType ObjectType { get; set; }
|
||||
public List<Attribute> Attributes { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Request
|
||||
{
|
||||
public class ObjectType
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class Attribute
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string DisplayName { get; set; }
|
||||
public object Value { get; set; }
|
||||
public int? Type { get; set; }
|
||||
public int? UnderlyingType { get; set; }
|
||||
public string Column { get; set; }
|
||||
public bool? IsSystem { get; set; }
|
||||
public bool? IsSortable { get; set; }
|
||||
public VectorDetails VectorDetails { get; set; }
|
||||
public TypeSpecificDetails TypeSpecificDetails { get; set; }
|
||||
public int? MaxSize { get; set; }
|
||||
public bool? AlwaysModifiable { get; set; }
|
||||
public int? PreDigits { get; set; }
|
||||
public int? PostDigits { get; set; }
|
||||
public bool? IsFulltext { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response.Delete
|
||||
{
|
||||
public class DocDelErrorResponse
|
||||
{
|
||||
public ErrorDetail Error { get; set; }
|
||||
public List<Error> Errors { get; set; }
|
||||
public bool HasErrors { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response.Delete
|
||||
{
|
||||
public class ErrorDetail
|
||||
{
|
||||
public string Message { get; set; }
|
||||
public int? ErrorCode { get; set; }
|
||||
public int? Type { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class DocResponse
|
||||
{
|
||||
public Item Item { get; set; }
|
||||
public IndexingDetails IndexingDetails { get; set; }
|
||||
public Error Error { get; set; }
|
||||
public List<Error> Errors { get; set; }
|
||||
public bool? HasErrors { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using WindreamHub.Legacy.Client.Models.Shared;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class Error
|
||||
{
|
||||
public ErrorItem Item { get; set; }
|
||||
public string Message { get; set; }
|
||||
public int? ErrorCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class IndexingDetails
|
||||
{
|
||||
public bool? IndexEventRequired { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class Item
|
||||
{
|
||||
public List<Attribute> Attributes { get; set; }
|
||||
public ObjectType ObjectType { get; set; }
|
||||
public ParentWindreamObject ParentWindreamObject { get; set; }
|
||||
public int? Entity { get; set; }
|
||||
public string LocationComplete { get; set; }
|
||||
public int? Id { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class ObjectType
|
||||
{
|
||||
public int? Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class ParentWindreamObject
|
||||
{
|
||||
public string LocationComplete { get; set; }
|
||||
public int? Id { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class TypeSpecificDetails
|
||||
{
|
||||
public bool? OnceEditable { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Documents.Response
|
||||
{
|
||||
public class VectorDetails
|
||||
{
|
||||
public int? EntriesLimit { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@ using System;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Models
|
||||
{
|
||||
@@ -89,5 +92,19 @@ namespace WindreamHub.Legacy.Client.Models
|
||||
error?.Invoke(res.Error);
|
||||
});
|
||||
}
|
||||
|
||||
public static string Serialize(this object model) => JsonConvert.SerializeObject(model);
|
||||
|
||||
public static T Deserialize<T>(this string json) => JsonConvert.DeserializeObject<T>(json);
|
||||
|
||||
public static dynamic Deserialize(this string json) => JsonConvert.DeserializeObject<dynamic>(json);
|
||||
|
||||
public static IEnumerable<dynamic> DeserializeList(this string json) => JsonConvert.DeserializeObject<IEnumerable<dynamic>>(json);
|
||||
|
||||
public static HttpContent ToContent(this string json, Encoding encoding = null, string mediaType = "application/json")
|
||||
=> new StringContent(json, encoding ?? Encoding.UTF8, mediaType);
|
||||
|
||||
public static HttpContent Stringify(this object model, Encoding encoding = null, string mediaType = "application/json")
|
||||
=> model.Serialize().ToContent(encoding ?? Encoding.UTF8, mediaType);
|
||||
}
|
||||
}
|
||||
10
src/WindreamHub.Legacy.Client/Models/Shared/ErrorItem.cs
Normal file
10
src/WindreamHub.Legacy.Client/Models/Shared/ErrorItem.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace WindreamHub.Legacy.Client.Models.Shared
|
||||
{
|
||||
public class ErrorItem
|
||||
{
|
||||
public int? Entity { get; set; }
|
||||
public int? Id { get; set; }
|
||||
public string Location { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace WindreamHub.Legacy.Client.Models
|
||||
namespace WindreamHub.Legacy.Client.Models.SystemDetails
|
||||
{
|
||||
public class SystemDetails
|
||||
{
|
||||
@@ -8,6 +8,6 @@
|
||||
|
||||
public string DefaultDomain { get; set; }
|
||||
|
||||
public int AuthenticationModes { get; set; }
|
||||
public int? AuthenticationModes { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
namespace WindreamHub.Legacy.Client.Models
|
||||
namespace WindreamHub.Legacy.Client.Models.SystemDetails
|
||||
{
|
||||
public class SystemDetailsResponse
|
||||
{
|
||||
@@ -8,6 +8,6 @@
|
||||
|
||||
public object Errors { get; set; }
|
||||
|
||||
public bool HasErrors { get; set; }
|
||||
public bool? HasErrors { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using DigitalData.Core.Legacy.Client;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using WindreamHub.Legacy.Client.Models;
|
||||
using WindreamHub.Legacy.Client.Models.Authentication;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Routes
|
||||
{
|
||||
public class AuthenticationRouteService : BaseRouteService
|
||||
{
|
||||
public AuthenticationRouteService(HttpClient client, CookieContainer cookieContainer, IOptions<WindreamClientOptions> clientOptions) : base(client, cookieContainer, clientOptions)
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<SimplifiedResponse<ValidationResponse, object>> IsValidUserAsync()
|
||||
{
|
||||
return await FetchAsync(route: "/IsValidUser", HttpMethod.Get).ThenAsync(res => res.Simplify<ValidationResponse, object>());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
using DigitalData.Core.Legacy.Client;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
|
||||
@@ -15,8 +14,8 @@ namespace WindreamHub.Legacy.Client.Routes
|
||||
|
||||
clientOptions.Value.Routes.TryGetValue(route_name, out string route);
|
||||
|
||||
if(route is null)
|
||||
throw new InvalidOperationException($"Route not found for the route name: {route_name}.");
|
||||
if (route is null)
|
||||
Uri += $"/{route_name.ToLower()}";
|
||||
|
||||
Uri += route;
|
||||
}
|
||||
|
||||
122
src/WindreamHub.Legacy.Client/Routes/DocumentsRouteService.cs
Normal file
122
src/WindreamHub.Legacy.Client/Routes/DocumentsRouteService.cs
Normal file
@@ -0,0 +1,122 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using DigitalData.Core.Legacy.Client;
|
||||
using System.Threading.Tasks;
|
||||
using WindreamHub.Legacy.Client.Models;
|
||||
using WindreamHub.Legacy.Client.Models.Documents.Response;
|
||||
using WindreamHub.Legacy.Client.Models.Documents.Request;
|
||||
using System.IO;
|
||||
using System.Web;
|
||||
using WindreamHub.Legacy.Client.Models.Documents;
|
||||
using System.Linq;
|
||||
using WindreamHub.Legacy.Client.Models.Documents.Response.Delete;
|
||||
using WindreamHub.Legacy.Client.Models.Documents.Request.Delete;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Routes
|
||||
{
|
||||
public class DocumentsRouteService : BaseRouteService
|
||||
{
|
||||
public DocumentsRouteService(HttpClient client, CookieContainer cookieContainer, IOptions<WindreamClientOptions> clientOptions) : base(client, cookieContainer, clientOptions)
|
||||
{
|
||||
}
|
||||
|
||||
//Create
|
||||
public async Task<SimplifiedResponse<TData, TError>> CreateAsync<TData, TError>(DocBody docCreateBody)
|
||||
=> await FetchAsync(route: "/Create", method: HttpMethod.Post, body: docCreateBody.Stringify())
|
||||
.ThenAsync(res => res.Simplify<TData, TError>());
|
||||
|
||||
public Task<SimplifiedResponse<dynamic, dynamic>> CreateDynamicAsync(DocBody docCreateBody) => CreateAsync<dynamic, dynamic>(docCreateBody);
|
||||
|
||||
public Task<SimplifiedResponse<DocResponse, DocResponse>> CreateAsync(DocBody docCreateBody) => CreateAsync<DocResponse, DocResponse>(docCreateBody);
|
||||
|
||||
//Upload
|
||||
public async Task<SimplifiedResponse<TData, TError>> UploadAsync<TData, TError>(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
|
||||
{
|
||||
using (var fileStream = File.OpenRead(path))
|
||||
{
|
||||
var fileContent = new StreamContent(fileStream);
|
||||
var formData = new MultipartFormDataContent
|
||||
{
|
||||
{ fileContent, "file" },
|
||||
};
|
||||
|
||||
var query = HttpUtility.ParseQueryString(string.Empty);
|
||||
|
||||
if (item_id != null)
|
||||
query["parameter.item.id"] = item_id.ToString();
|
||||
|
||||
if (item_location != null)
|
||||
query["parameter.item.location"] = item_location;
|
||||
|
||||
if (item_name != null)
|
||||
query["parameter.item.name"] = item_name;
|
||||
|
||||
if (flags != null && flags.Length > 0)
|
||||
query["parameter.flags"] = string.Join(",", flags.Select(flag => (int)flag));
|
||||
|
||||
if (stream_identity != null)
|
||||
query["parameter.stream.__identity"] = stream_identity.ToString();
|
||||
|
||||
return await FetchAsync(route: $"/Upload?{query}", method: HttpMethod.Post, body: fileContent).ThenAsync(res => res.Simplify<TData, TError>());
|
||||
}
|
||||
}
|
||||
|
||||
public Task<SimplifiedResponse<dynamic, dynamic>> UploadDynamicAsync(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
|
||||
=> UploadAsync<dynamic, dynamic>(path: path, item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
|
||||
|
||||
public Task<SimplifiedResponse<DocResponse, DocResponse>> UploadAsync(string path, long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
|
||||
=> UploadAsync<DocResponse, DocResponse>(path: path, item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
|
||||
|
||||
//Update
|
||||
public async Task<SimplifiedResponse<TData, TError>> UpdateAsync<TData, TError>(DocBody docUpdateBody)
|
||||
=> await FetchAsync(route: "/Update", method: HttpMethod.Post, body: docUpdateBody.Stringify())
|
||||
.ThenAsync(res => res.Simplify<TData, TError>());
|
||||
|
||||
public Task<SimplifiedResponse<dynamic, dynamic>> UpdateDynamicAsync(DocBody docUpdateBody)
|
||||
=> UpdateAsync<dynamic, dynamic>(docUpdateBody);
|
||||
|
||||
public Task<SimplifiedResponse<DocResponse, DocResponse>> UpdateAsync(DocBody docUpdateBody)
|
||||
=> UpdateAsync<DocResponse, DocResponse>(docUpdateBody);
|
||||
|
||||
//Download
|
||||
public async Task<SimplifiedResponse<TData, TError>> DownloadAsync<TData, TError>(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
|
||||
{
|
||||
var query = HttpUtility.ParseQueryString(string.Empty);
|
||||
|
||||
if (item_id != null)
|
||||
query["parameter.item.id"] = item_id.ToString();
|
||||
|
||||
if (item_location != null)
|
||||
query["parameter.item.location"] = item_location;
|
||||
|
||||
if (item_name != null)
|
||||
query["parameter.item.name"] = item_name;
|
||||
|
||||
if (flags != null && flags.Length > 0)
|
||||
query["parameter.flags"] = string.Join(",", flags.Select(flag => (int)flag));
|
||||
|
||||
if (stream_identity != null)
|
||||
query["parameter.stream.__identity"] = stream_identity.ToString();
|
||||
|
||||
return await FetchAsync(route: $"/Download?{query}", method: HttpMethod.Get).ThenAsync(res => res.Simplify<TData, TError>());
|
||||
}
|
||||
|
||||
public Task<SimplifiedResponse<dynamic, dynamic>> DownloadDynamicAsync(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
|
||||
=> DownloadAsync<dynamic, dynamic>(item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
|
||||
|
||||
public Task<SimplifiedResponse<DocResponse, DocResponse>> DownloadAsync(long? item_id = null, string item_location = null, string item_name = null, object stream_identity = null, params Flag[] flags)
|
||||
=> DownloadAsync<DocResponse, DocResponse>(item_id: item_id, item_location: item_location, item_name: item_name, stream_identity: stream_identity, flags: flags);
|
||||
|
||||
//Delete
|
||||
public async Task<SimplifiedResponse<TData, TError>> DeleteAsync<TData, TError>(DocDeleteBody docDeleteBody)
|
||||
=> await FetchAsync(route: "/Delete", HttpMethod.Post, body: docDeleteBody.Stringify())
|
||||
.ThenAsync(res => res.Simplify<TData, TError>());
|
||||
|
||||
public async Task<SimplifiedResponse<dynamic, dynamic>> DeleteDynamicAsync(DocDeleteBody docDeleteBody)
|
||||
=> await DeleteAsync<dynamic, dynamic>(docDeleteBody: docDeleteBody);
|
||||
|
||||
public async Task<SimplifiedResponse<DocResponse, DocDelErrorResponse>> DeleteAsync(DocDeleteBody docDeleteBody)
|
||||
=> await DeleteAsync<DocResponse, DocDelErrorResponse>(docDeleteBody: docDeleteBody);
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Routes
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using DigitalData.Core.Legacy.Client;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System;
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using WindreamHub.Legacy.Client.Routes;
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
using WindreamHub.Legacy.Client.Models;
|
||||
using WindreamHub.Legacy.Client.Models.SystemDetails;
|
||||
using WindreamHub.Legacy.Client.Routes;
|
||||
|
||||
namespace WindreamHub.Legacy.Client.Route
|
||||
@@ -15,7 +16,7 @@ namespace WindreamHub.Legacy.Client.Route
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<SimplifiedResponse<SystemDetailsResponse, object>> GetSystemDetails()
|
||||
public async Task<SimplifiedResponse<SystemDetailsResponse, object>> GetSystemDetailsAsync()
|
||||
=> await FetchAsync(route: "/GetSystemDetails")
|
||||
.ThenAsync(res => res.Simplify<SystemDetailsResponse, object>());
|
||||
}
|
||||
|
||||
@@ -8,7 +8,8 @@ namespace WindreamHub.Legacy.Client
|
||||
public Dictionary<string, string> Routes = new Dictionary<string, string>()
|
||||
{
|
||||
{ "Subscriptions", "/subscriptions" },
|
||||
{ "SystemDetails", "/systemDetails" }
|
||||
{ "SystemDetails", "/systemDetails" },
|
||||
{ "Authentication", "/authentication" }
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -2,22 +2,51 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Threading.Tasks;
|
||||
using WindreamHub.Legacy.Client.Models.Authentication;
|
||||
using WindreamHub.Legacy.Client.Models;
|
||||
using WindreamHub.Legacy.Client.Route;
|
||||
using WindreamHub.Legacy.Client.Routes;
|
||||
|
||||
namespace WindreamHub.Legacy.Client
|
||||
{
|
||||
public class WindreamClientService : HttpClientService<WindreamClientOptions>
|
||||
{
|
||||
public WindreamClientService(SubscriptionsRouteService subscriptions, SystemDetailsRouteService systemDetails,
|
||||
HttpClient client, CookieContainer cookieContainer, IOptions<WindreamClientOptions> clientOptions) :
|
||||
public WindreamClientService(SubscriptionsRouteService subscriptions, SystemDetailsRouteService systemDetails, AuthenticationRouteService authentication, DocumentsRouteService documents, HttpClient client, CookieContainer cookieContainer, IOptions<WindreamClientOptions> clientOptions) :
|
||||
base(client, cookieContainer, clientOptions)
|
||||
{
|
||||
Subscriptions = subscriptions;
|
||||
SystemDetails = systemDetails;
|
||||
Authentication = authentication;
|
||||
Documents = documents;
|
||||
}
|
||||
|
||||
public SubscriptionsRouteService Subscriptions { get; }
|
||||
|
||||
public SystemDetailsRouteService SystemDetails { get; }
|
||||
|
||||
public AuthenticationRouteService Authentication { get; }
|
||||
|
||||
public DocumentsRouteService Documents { get; }
|
||||
|
||||
public async Task<bool> AuthenticateAsync(ICredential credential)
|
||||
{
|
||||
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credential.AuthorizationHeader);
|
||||
var res = await Authentication.IsValidUserAsync();
|
||||
return res.Ok && (res.Data.IsValidUser ?? false);
|
||||
}
|
||||
|
||||
public async Task<bool> AuthenticateAsync(string domain, string name, string password)
|
||||
{
|
||||
var uCredential = new UserCredential(domain, name, password);
|
||||
return await AuthenticateAsync(uCredential);
|
||||
}
|
||||
|
||||
public async Task<bool> AuthenticateAsync(string authorizationHeader)
|
||||
{
|
||||
var uCredential = new Base64Credential(authorizationHeader);
|
||||
return await AuthenticateAsync(uCredential);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,6 +74,7 @@
|
||||
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||
<HintPath>..\..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -83,11 +84,37 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DIExtensions.cs" />
|
||||
<Compile Include="Models\Authentication\ErrorDetails.cs" />
|
||||
<Compile Include="Models\Documents\Flag.cs" />
|
||||
<Compile Include="Models\Documents\Request\Delete\DeleteItem.cs" />
|
||||
<Compile Include="Models\Documents\Request\Delete\DocDeleteBody.cs" />
|
||||
<Compile Include="Models\Documents\Response\Delete\DocDelErrorResponse.cs" />
|
||||
<Compile Include="Models\Documents\Response\Delete\ErrorDetail.cs" />
|
||||
<Compile Include="Models\Documents\Response\Error.cs" />
|
||||
<Compile Include="Models\Shared\ErrorItem.cs" />
|
||||
<Compile Include="Models\Authentication\ICredential.cs" />
|
||||
<Compile Include="Models\Authentication\ValidationResponse.cs" />
|
||||
<Compile Include="Models\Authentication\Base64Credential.cs" />
|
||||
<Compile Include="Models\Documents\Request\Attribute.cs" />
|
||||
<Compile Include="Models\Documents\Request\Item.cs" />
|
||||
<Compile Include="Models\Documents\Request\ObjectType.cs" />
|
||||
<Compile Include="Models\Documents\Request\DocBody.cs" />
|
||||
<Compile Include="Models\Documents\Response\Attribute.cs" />
|
||||
<Compile Include="Models\Documents\Response\DocResponse.cs" />
|
||||
<Compile Include="Models\Documents\Response\IndexingDetails.cs" />
|
||||
<Compile Include="Models\Documents\Response\Item.cs" />
|
||||
<Compile Include="Models\Documents\Response\ObjectType.cs" />
|
||||
<Compile Include="Models\Documents\Response\ParentWindreamObject.cs" />
|
||||
<Compile Include="Models\Documents\Response\TypeSpecificDetails.cs" />
|
||||
<Compile Include="Models\Documents\Response\VectorDetails.cs" />
|
||||
<Compile Include="Models\ModelExtensions.cs" />
|
||||
<Compile Include="Models\SimplifiedResponse.cs" />
|
||||
<Compile Include="Models\SystemDetails.cs" />
|
||||
<Compile Include="Models\SystemDetailsResponse.cs" />
|
||||
<Compile Include="Models\SystemDetails\SystemDetails.cs" />
|
||||
<Compile Include="Models\SystemDetails\SystemDetailsResponse.cs" />
|
||||
<Compile Include="Models\Authentication\UserCredential.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Routes\DocumentsRouteService.cs" />
|
||||
<Compile Include="Routes\AuthenticationRouteService.cs" />
|
||||
<Compile Include="Routes\BaseRouteService.cs" />
|
||||
<Compile Include="Routes\RouteExtensions.cs" />
|
||||
<Compile Include="Routes\SystemDetailsRouteService.cs" />
|
||||
@@ -104,5 +131,6 @@
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
@@ -1,35 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<package>
|
||||
<metadata>
|
||||
<id>WindreamHub.Legacy.Client</id>
|
||||
<version>1.0.0</version>
|
||||
<title>WindreamHub.Legacy.Client</title>
|
||||
<authors>Digital Data GmbH</authors>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<license type="expression">MIT</license>
|
||||
<icon>Assets\icon.png</icon>
|
||||
<projectUrl>http://git.dd:3000/tekh/WindreamHub.git</projectUrl>
|
||||
<description>This package provides the client library for the Windream. It includes functionality for making HTTP requests to the Windream Webservice API, facilitating integration and communication with Windream document management systems. This version is specifically designed to be compatible with .NET Framework.</description>
|
||||
<copyright>Copyright 2024</copyright>
|
||||
<tags>digital data core http windream legacy</tags>
|
||||
<dependencies>
|
||||
<dependency id="DigitalData.Core.Client.Legacy" version="1.0.1.2" />
|
||||
<dependency id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" />
|
||||
<dependency id="Microsoft.Extensions.DependencyInjection" version="8.0.0" />
|
||||
<dependency id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" />
|
||||
<dependency id="Microsoft.Extensions.Options" version="8.0.2" />
|
||||
<dependency id="Microsoft.Extensions.Primitives" version="8.0.0" />
|
||||
<dependency id="Newtonsoft.Json" version="13.0.1" />
|
||||
<dependency id="System.Buffers" version="4.5.1" />
|
||||
<dependency id="System.Memory" version="4.5.5" />
|
||||
<dependency id="System.Numerics.Vectors" version="4.5.0" />
|
||||
<dependency id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" />
|
||||
<dependency id="System.Threading.Tasks.Extensions" version="4.5.4" />
|
||||
<dependency id="System.ValueTuple" version="4.5.0" />
|
||||
</dependencies>
|
||||
</metadata>
|
||||
<files>
|
||||
<file src="bin\Release\WindreamHub.Legacy.Client.dll" target="lib\net462\WindreamHub.Legacy.Client.dll" />
|
||||
<file src="Assets\icon.png" target="Assets\" />
|
||||
</files>
|
||||
</package>
|
||||
@@ -7,7 +7,7 @@
|
||||
<package id="Microsoft.Extensions.Options" version="8.0.2" targetFramework="net462" />
|
||||
<package id="Microsoft.Extensions.Primitives" version="8.0.0" targetFramework="net462" />
|
||||
<package id="Newtonsoft.Json" version="13.0.1" targetFramework="net462" />
|
||||
<package id="NuGet.CommandLine" version="6.10.1" targetFramework="net462" developmentDependency="true" />
|
||||
<package id="NuGet.CommandLine" version="6.11.0" targetFramework="net462" developmentDependency="true" />
|
||||
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
|
||||
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
|
||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
|
||||
|
||||
Reference in New Issue
Block a user