Package Version constraints
parent
fa6272ac28
commit
cea05fe8ff
@ -0,0 +1,23 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using isn;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding;
|
||||||
|
|
||||||
|
namespace isnd.Helpers
|
||||||
|
{
|
||||||
|
public static class ApiHelpers
|
||||||
|
{
|
||||||
|
|
||||||
|
static public APIKO CreateAPIKO(this Controller controller, string context)
|
||||||
|
{
|
||||||
|
Dictionary<string,string[]> errors = new();
|
||||||
|
|
||||||
|
foreach (var elt in controller.ModelState)
|
||||||
|
{
|
||||||
|
errors[elt.Key] = elt.Value.Errors.Select( e => e.ErrorMessage).ToArray();
|
||||||
|
}
|
||||||
|
return new APIKO{ Context = context, Errors = errors };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +0,0 @@
|
|||||||
using System.Text.Json;
|
|
||||||
|
|
||||||
namespace isnd
|
|
||||||
{
|
|
||||||
internal class TypeIdNamingPolicy : JsonNamingPolicy
|
|
||||||
{
|
|
||||||
public override string ConvertName(string name)
|
|
||||||
{
|
|
||||||
if (name == "Id") return "@id";
|
|
||||||
if (name == "Type") return "@type";
|
|
||||||
return "" + char.ToLower(name[0]) + name[1..];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,98 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
using isnd.Data.Catalog;
|
|
||||||
|
|
||||||
namespace isnd
|
|
||||||
{
|
|
||||||
class WebApiReferenceHandler : ReferenceHandler
|
|
||||||
{
|
|
||||||
public WebApiReferenceHandler() => Reset();
|
|
||||||
private ReferenceResolver? _rootedResolver;
|
|
||||||
public override ReferenceResolver CreateResolver() => _rootedResolver!;
|
|
||||||
public void Reset() => _rootedResolver = new WebApiReferenceResolver();
|
|
||||||
}
|
|
||||||
|
|
||||||
public class WebApiReferenceResolver : ReferenceResolver
|
|
||||||
{
|
|
||||||
private int delautIdCounter;
|
|
||||||
|
|
||||||
Dictionary<string, Permalink> HappyIdOwners { get; set; }
|
|
||||||
|
|
||||||
Dictionary<int,object> Objects {get; set;}
|
|
||||||
|
|
||||||
public WebApiReferenceResolver()
|
|
||||||
{
|
|
||||||
delautIdCounter = 0;
|
|
||||||
HappyIdOwners = new Dictionary<string, Permalink>();
|
|
||||||
Objects = new Dictionary<int, object>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void AddReference(string referenceId, object value)
|
|
||||||
{
|
|
||||||
if (value is Permalink)
|
|
||||||
{
|
|
||||||
string hoi = (value as Permalink).GetId();
|
|
||||||
if (HappyIdOwners.ContainsKey(hoi))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
HappyIdOwners[hoi] = value as Permalink;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (Objects.ContainsValue(value))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
delautIdCounter++;
|
|
||||||
Objects[delautIdCounter] = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string GetReference(object value, out bool alreadyExists)
|
|
||||||
{
|
|
||||||
if (value is Permalink)
|
|
||||||
{
|
|
||||||
string oid = (value as Permalink).GetId();
|
|
||||||
if (oid == null)
|
|
||||||
throw new System.Exception("HappyIdOwner Id property is null");
|
|
||||||
if (HappyIdOwners.ContainsKey(oid))
|
|
||||||
{
|
|
||||||
alreadyExists=true;
|
|
||||||
return oid;
|
|
||||||
}
|
|
||||||
alreadyExists=false;
|
|
||||||
AddReference(oid, value);
|
|
||||||
return oid;
|
|
||||||
}
|
|
||||||
alreadyExists=false;
|
|
||||||
|
|
||||||
if (Objects.ContainsValue(value))
|
|
||||||
{
|
|
||||||
alreadyExists=true;
|
|
||||||
return Objects.First( ode => ode.Value ==value).Key.ToString();
|
|
||||||
}
|
|
||||||
alreadyExists=false;
|
|
||||||
delautIdCounter++;
|
|
||||||
Objects[delautIdCounter]=value;
|
|
||||||
return delautIdCounter.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override object ResolveReference(string referenceId)
|
|
||||||
{
|
|
||||||
if (HappyIdOwners.ContainsKey(referenceId))
|
|
||||||
return HappyIdOwners[referenceId];
|
|
||||||
int refNId;
|
|
||||||
if (int.TryParse(referenceId, out refNId))
|
|
||||||
{
|
|
||||||
if (Objects.ContainsKey(refNId))
|
|
||||||
{
|
|
||||||
return Objects[refNId];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue