Exemple #1
0
        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));
        }
Exemple #2
0
        //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;
        }
Exemple #3
0
        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)
                });
            }
        }
Exemple #4
0
        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);
    }
Exemple #6
0
 public void GetSchema(string type)
 {
     SendOkJson();
     _serializer.StreamSchema(_factory.GetTypeByName(type), GetToken(), Response.Body);
 }