Ejemplo n.º 1
0
        public static AstFile Parse(String json)
        {
            var parsed = JObject.Parse(json)["ast"];

            var ast = new AstFile();

            ast.Version = (String)parsed["_version"];
            foreach (var d in parsed["metadata"])
            {
                ast.MetaData.Add((String)d["name"], (String)d["value"]);
            }
            ast.Name        = (String)parsed["name"];
            ast.Description = (String)parsed["description"];

            foreach (var g in parsed["resourceGroups"])
            {
                var group = new AstResourceGroup
                {
                    Name        = (String)g["name"],
                    Description = (String)g["description"]
                };
                foreach (var r in g["resources"])
                {
                    var resource = new AstResource
                    {
                        Name        = (String)r["name"],
                        Description = (String)r["description"],
                        UriTemplate = (String)r["uriTemplate"]
                    };
                    foreach (var a in r["actions"])
                    {
                        var method = HttpMethod.Get;
                        switch (((String)a["method"]).ToUpper())
                        {
                        case "DELETE":
                            method = HttpMethod.Delete;
                            break;

                        case "HEAD":
                            method = HttpMethod.Head;
                            break;

                        case "OPTIONS":
                            method = HttpMethod.Options;
                            break;

                        case "POST":
                            method = HttpMethod.Post;
                            break;

                        case "PUT":
                            method = HttpMethod.Put;
                            break;

                        case "TRACE":
                            method = HttpMethod.Trace;
                            break;
                        }

                        var action = new AstAction
                        {
                            Method = method
                        };

                        resource.Actions.Add(action);
                    }
                    group.Resources.Add(resource);
                }
                ast.ResourceGroups.Add(group);
            }


            return(ast);
        }
Ejemplo n.º 2
0
        public static AstFile Load(String filename)
        {
            var raw = File.ReadAllText(filename);

            return(AstFile.Parse(raw));
        }