blob: 84baa7c88d78d6aacdab4510410c27f3d5a4cf12 [file] [log] [blame]
using oneM2MClient.Client;
using oneM2MClient.Utils;
using BaSys40.Utils.ResultHandling;
using System;
using System.Collections.Generic;
using static oneM2MClient.oneM2M;
namespace oneM2MClient.Resources
{
public static class CSEBase
{
public static Result<Response> Retrieve(IClient client, Request request)
{ return (Process(client, request, Operation.RETRIEVE)); }
public static Result<Response> Discover(IClient client, Request request, FilterUsage? filter, ResultContent? resultContent, List<string> labels = null)
{
if(filter.HasValue)
request.FilterUsage(filter.Value);
if(resultContent.HasValue)
request.ResultContent(resultContent.Value);
if (labels != null)
request.AddFilterLabels(labels);
return (Process(client, request, Operation.RETRIEVE));
}
public static Result<Response> Process(IClient client, Request request, Operation operation)
{
return CRUD(client, request, operation, ResourceType.NoResource, null);
}
public static Result<Response> CRUD(IClient client, Request request, Operation operation, ResourceType resourceType, object primitiveContent)
{
Result<Response> response = null;
try
{
if (Helper.IsNullObjects(client, request))
return new Result<Response>(false, new Message(MessageType.Error, "Client or request object is null", null));
request.Operation(operation);
request.ResourceType(resourceType);
if(primitiveContent != null)
request.AddPrimitiveContent(primitiveContent);
if(!client.IsAlive)
client.Start();
response = client.Send(request);
return response;
}
catch (Exception e)
{
return Helper.HandleResultWithException(response, e);
}
finally
{
request?.ClearRequest();
}
}
}
}