private static KeyValuePair <string, object>?GetD8FieldAndValue(PropertyInfo prop, object sourceObj) { var attr = FindThisAttribute(prop); if (attr == null) { return(null); } var key = $"field_{GetFieldName(attr)}"; var objVal = prop.GetValue(sourceObj); Func <object, object> func; if (_typFunctions.TryGetValue(prop.PropertyType, out func)) { return(new KeyValuePair <string, object> (key, D8HALJson.ValueField(func(objVal)))); } else { return(new KeyValuePair <string, object> (key, D8HALJson.ValueField(objVal))); } }
public async Task <NodeReply> PatchNode <T>(T node, CancellationToken cancelTkn, string revisionLog) where T : ID8Node { var url = string.Format(D8.NODE_X_FORMAT_HAL, node.nid); //var url = string.Format(D8.NODE_X_REV_Y_FMT_HAL, node.nid, node.vid); var mapd = D8NodeMapper.Cast(node, BaseURL); if (!revisionLog.IsBlank()) { var now = DateTime.Now.ToString("d MMM yyyy, h:mmtt"); var log = $"[{Creds.Username}, {now}] {revisionLog}"; mapd.Add("revision_log", D8HALJson.ValueField(log)); } Dictionary <string, object> dict; try { dict = await BasicAuthPATCH <Dictionary <string, object> >(url, mapd, cancelTkn); return(new NodeReply(dict)); } catch (Exception ex) { return(NodeReply.Fail(ex)); } }
private Mock <IR2RestClient> MockClientReturning(params R2PackagePart[] parts) { var moq = new Mock <IR2RestClient>(); moq.Setup(x => x.List <R2PackagePart, PartsByPkgHash1>(Any.Tkn, Any.Text, Any.Text)) .ReturnsAsync(parts.ToList()); var dict = new Dictionary <string, object>(); dict.Add("nid", Json.Serialize(D8HALJson.ValueField(123))); moq.Setup(x => x.PostNode(Any.Node, Any.Tkn)) .ReturnsAsync(new NodeReply(dict)); return(moq); }
internal static List <Dictionary <string, object> > ToD8Field <T>(T sourceObj) where T : ID8Node => D8HALJson.ValueField(GetPropertyValue(sourceObj)?.ToString());