public PathResult Parse(PathString path) { var parts = path.ToString().TrimStart('/').Split("/"); if (parts.Length > 0) { if (parts[0].Equals(baseUrl)) { if (parts.Length > 1) { var typeNameOrId = parts[1]; var foundType = factory.GetTypeByName(typeNameOrId); if (foundType != null) { string id = (parts.Length > 2) ? parts[2] : null; return(new PathResult(true, foundType, id)); } if (!requireType) { return(new PathResult(true, null, typeNameOrId)); } } if (returnTrueOnBaseUrl) { return(new PathResult(true, null, null)); } } } return(new PathResult(false, null, null)); }
//private readonly IContainer container; //private readonly INodeTypeFactory factory; public NodeQuery(IContainer container, INodeTypeFactory factory) { //this.container = container; //this.factory = factory; var nodeResolver = new NodeResolver(container); foreach (var typeName in factory.RegisterdTypeNames()) { var type = factory.GetTypeByName(typeName); var ft = new FieldType() { Arguments = new QueryArguments( new QueryArgument <NonNullGraphType <StringGraphType> > { Name = "id", Description = "id of the node" } ), Resolver = nodeResolver, Name = typeName, Type = type, ResolvedType = new NodeGraphType(typeName, type) }; fields.Add(ft); } IsTypeOf = type => type is INode; }
private void RegisterNodeTypes() { var nodeResolver = new NodeResolver(container); foreach (var typeName in factory.RegisterdTypeNames()) { var type = factory.GetTypeByName(typeName); AddField(new FieldType() { Arguments = GetIdQuery(), Resolver = nodeResolver, Name = typeName, Type = type, ResolvedType = new NodeReflectionGraphType(typeName, type, container) }); } }
private void HandlePost(PathResult query, Dictionary <string, object> requestDictionary) { var parentId = query.Id; var nodeType = query.NodeType; if (requestDictionary.TryGetValue("parentId", out object dataParentId)) { parentId = dataParentId.ToString(); } if (nodeType == null) { if (requestDictionary.TryGetValue("type", out object dataType)) { nodeType = factory.GetTypeByName(dataType.ToString()); } } var node = container.GetById(parentId); if (nodeType != null) { if (node != null) { var newnode = Activator.CreateInstance(query.NodeType) as INode; newnode.Apply(requestDictionary); node.Add(newnode); query.SetId(newnode.Id); } else { throw new KeyNotFoundException("parentId"); } } else { throw new KeyNotFoundException("type"); } }
public async Task ListenForCommands() { var buffer = new byte[1024 * 8]; var result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); while (!result.CloseStatus.HasValue) { ArraySegment <byte> segment = null; if (result.Count > 1) { var parsedRequest = new SocketRequest(buffer, result.Count); if (parsedRequest.RequestType == RequestTypeEnum.AuthToken) { CurrentToken = parsedRequest.Data; } else { var returnData = container.MatchRequest(parsedRequest, factory); if (parsedRequest.QueryString.ContainsKey("oftype")) { var nodeTypeToFind = factory.GetTypeByName(parsedRequest.QueryString["oftype"]); if (nodeTypeToFind != null) { var nodeArray = container.GetNodesByType(nodeTypeToFind, returnData); SendNodeArray(nodeArray); continue; } } SendNode(returnData); } } result = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); } RemoveChangeAction(); await socket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None); }
public void GetSchema(string type) { SendOkJson(); _serializer.StreamSchema(_factory.GetTypeByName(type), GetToken(), Response.Body); }