Exemplo n.º 1
0
        // This test asserts that we can generate snippets with @odata properties
        public void GenerateSnippetsWithOdataProperties()
        {
            //Arrange
            LanguageExpressions expressions = new JavascriptExpressions();

            const string directoryObj = "{\r\n  \"@odata.id\": \"https://graph.microsoft.com/v1.0/users/{id}\"\r\n}";

            var requestPayload = new HttpRequestMessage(HttpMethod.Put,
                                                        "https://graph.microsoft.com/v1.0/users/{id}/manager/$ref")
            {
                Content = new StringContent(directoryObj)
            };

            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = JavaScriptGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "const directoryObject = {\r\n" +
                                           "  '@odata.id': 'https://graph.microsoft.com/v1.0/users/{id}'\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "await client.api('/users/{id}/manager/$ref')\r\n" +
                                           "\t.put(directoryObject);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Entry point to generate snippets from the payload
        /// </summary>
        /// <param name="language"></param>
        /// <param name="httpRequestMessage"></param>
        /// <returns>String of snippet generated</returns>
        public string ProcessPayloadRequest(HttpRequestMessage httpRequestMessage, string language)
        {
            var(edmModel, serviceRootUri) = GetModelAndServiceUriTuple(httpRequestMessage.RequestUri);
            var snippetModel = new SnippetModel(httpRequestMessage, serviceRootUri.AbsoluteUri, edmModel);

            switch (language.ToLower())
            {
            case "c#":
                var csharpGenerator = new CSharpGenerator(edmModel, IsCommandLine);
                return(csharpGenerator.GenerateCodeSnippet(snippetModel, CSharpExpressions));

            case "javascript":
                return(JavaScriptGenerator.GenerateCodeSnippet(snippetModel, JavascriptExpressions));

            case "objective-c":
                var objectiveCGenerator = new ObjectiveCGenerator(edmModel);
                return(objectiveCGenerator.GenerateCodeSnippet(snippetModel, ObjectiveCExpressions));

            case "java":
                var javaGenerator = new JavaGenerator(edmModel);
                return(javaGenerator.GenerateCodeSnippet(snippetModel, JavaExpressions));

            default:
                throw new Exception("Invalid Language selected");
            }
        }
Exemplo n.º 3
0
        public static void Main()
        {
            // Read the Vale code from roguelike-small.vale.
            string valeCode = File.ReadAllText("roguelike-small.vale");

            Console.WriteLine("Compiling...");

            // This sends a request to the Vale compile server, and
            // results in some JSON representing VIR (Vale Intermediate Representation).
            string astJson = ValeHelper.Build(valeCode);
            // Uncomment this to see it!
            // Console.WriteLine(astJson);
            // Deserialize the VIR into AstModel instances.
            var ast = (IProgram)Json.Deserialize <AstModel>(astJson);

            Console.WriteLine("Cross-compiling to Javascript...");
            // Convert the VIR into Javascript, and write to output.js
            using (var outputFileStream = File.Create("output.js")) {
                using (var outputFileStreamWriter = new StreamWriter(outputFileStream, Encoding.ASCII)) {
                    foreach (var code in JavaScriptGenerator.Generate(ast))
                    {
                        outputFileStreamWriter.Write(code);
                    }
                }
            }

            // We're done!
            Console.WriteLine("Compiling done! Now run with:");
            Console.WriteLine("  node output.js");
        }
Exemplo n.º 4
0
        //This tests asserts that we can generate snippets from json objects with nested arrays inside them.
        public void GeneratesPatchRequestSnippetFromJsonObject()
        {
            //Arrange
            LanguageExpressions expressions = new JavascriptExpressions();
            //json string with nested objects string array
            const string userJsonObject = "{\r\n  \"accountEnabled\": true,\r\n  " +
                                          "\"businessPhones\": [\r\n    \"businessPhones-value\",\"businessPhones-value2\",\"businessPhones-value3\"\r\n  ],\r\n  " +//nested ArrayObject with 3 items
                                          "\"city\": \"city-value\"\r\n}";

            var requestPayload = new HttpRequestMessage(HttpMethod.Patch, "https://graph.microsoft.com/v1.0/me")
            {
                Content = new StringContent(userJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = JavaScriptGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "const user = {\r\n  " +
                                           "accountEnabled: true,\r\n  " +
                                           "businessPhones: [\r\n" +
                                           "    'businessPhones-value','businessPhones-value2','businessPhones-value3'\r\n" +
                                           "  ],\r\n  " +
                                           "city: 'city-value'\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "await client.api('/me')\r\n\t.update(user);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemplo n.º 5
0
        public void JavaScript_Complex()
        {
            var generator = new JavaScriptGenerator();
            var generated = generator.Generate(Ast.Complex());

            Console.WriteLine(generated);
        }
Exemplo n.º 6
0
        private void populateLists() {
            IProxyGenerator gen1 = new CSharpGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen1.GetName(), gen1));

            IProxyGenerator gen2 = new JavaScriptGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen2.GetName(), gen2));

            IProxyGenerator gen3 = new JavaScriptDojoAMDGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen3.GetName(), gen3));

            IProxyGenerator gen4 = new JavaGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen4.GetName(), gen4));

            IProxyGenerator gen5 = new ObjectiveCGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen5.GetName(), gen5));

            IProxyGenerator gen6 = new FlexGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen6.GetName(), gen6));

            IProxyGenerator gen7 = new AngularGenerator();
            cmbGenerator.Items.Add(new GeneratorItem(gen7.GetName(), gen7));
            
            cmbTypeMap.Items.Add(new TypeMapItem("No Type Map", null));
            ResourceManager resMan = new ResourceManager();
            foreach (TypeMap tm in resMan.GetTypeMaps())
            {
                TypeMapItem item = new TypeMapItem(tm.Name, tm);
                cmbTypeMap.Items.Add(item);
            }
            cmbTypeMap.Items.Add(new TypeMapItem("Custom", null));
        }
Exemplo n.º 7
0
        public ActionResult JavaScript(Block block)
        {
            var generator = new JavaScriptGenerator();
            var generated = generator.Generate(block);

            return(Content(generated));
        }
Exemplo n.º 8
0
        // This test asserts that single quotes inside strings are escaped
        public void GenerateSnippetsWithSingleQuotesInsideString()
        {
            //Arrange
            LanguageExpressions expressions = new JavascriptExpressions();

            const string actionResultParts =
                "{\r\n" +
                "  \"values\": [\r\n" +
                "    {\r\n" +
                "      \"@odata.type\": \"microsoft.graph.aadUserConversationMember\",\r\n" +
                "      \"roles\":[],\r\n" +
                "      \"[email protected]\": \"https://graph.microsoft.com/beta/users('18a80140-b0fb-4489-b360-2f6efaf225a0')\"\r\n" +
                "    },\r\n" +
                "    {\r\n" +
                "      \"@odata.type\": \"microsoft.graph.aadUserConversationMember\",\r\n" +
                "      \"roles\":[\"owner\"],\r\n" +
                "      \"[email protected]\": \"https://graph.microsoft.com/beta/users('86503198-b81b-43fe-81ee-ad45b8848ac9')\"\r\n" +
                "    }\r\n" +
                "  ]\r\n" +
                "}";


            var requestPayload = new HttpRequestMessage(HttpMethod.Post,
                                                        "https://graph.microsoft.com/beta/teams/e4183b04-c9a2-417c-bde4-70e3ee46a6dc/members/add")
            {
                Content = new StringContent(actionResultParts)
            };

            var betaServiceRootUrl = "https://graph.microsoft.com/beta";
            var betaEdmModel       = CsdlReader.Parse(XmlReader.Create(CommonGeneratorShould.CleanBetaMetadata));
            var snippetModel       = new SnippetModel(requestPayload, betaServiceRootUrl, betaEdmModel);

            //Act by generating the code snippet
            var result = JavaScriptGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet =
                "const actionResultPart = {\r\n" +
                "  values: [\r\n" +
                "    {\r\n" +
                "      '@odata.type': 'microsoft.graph.aadUserConversationMember',\r\n" +
                "      roles: [],\r\n" +
                "      '*****@*****.**': 'https://graph.microsoft.com/beta/users(\\'18a80140-b0fb-4489-b360-2f6efaf225a0\\')'\r\n" +
                "    },\r\n" +
                "    {\r\n" +
                "      '@odata.type': 'microsoft.graph.aadUserConversationMember',\r\n" +
                "      roles: ['owner'],\r\n" +
                "      '*****@*****.**': 'https://graph.microsoft.com/beta/users(\\'86503198-b81b-43fe-81ee-ad45b8848ac9\\')'\r\n" +
                "    }\r\n" +
                "  ]\r\n" +
                "};\r\n" +
                "\r\n" +
                "await client.api('/teams/e4183b04-c9a2-417c-bde4-70e3ee46a6dc/members/add')\r\n" +
                "\t.version('beta')\r\n" +
                "\t.post(actionResultPart);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemplo n.º 9
0
        public void GenerateExampleApiTypeScript_IncludesEnums()
        {
            ServiceInfo  service;
            const string fileName = "Facility.CodeGen.JavaScript.UnitTests.ExampleApi.fsd";
            var          parser   = new FsdParser();
            var          stream   = GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName) !;

            Assert.IsNotNull(stream);
            using (var reader = new StreamReader(stream))
                service = parser.ParseDefinition(new ServiceDefinitionText(Path.GetFileName(fileName), reader.ReadToEnd()));

            var generator = new JavaScriptGenerator
            {
                GeneratorName = "JavaScriptGeneratorTests",
                TypeScript    = true,
                NewLine       = "\n",
            };
            var result = generator.GenerateOutput(service);

            Assert.IsNotNull(result);

            var          typesFile     = result.Files.Single(f => f.Name == "exampleApiTypes.ts");
            const string expectedEnums = @"
/** Identifies a widget field. */
export enum WidgetField {
	/** The 'id' field. */
	id = 'id',

	/** The 'name' field. */
	name = 'name',

	/**
	 * The 'weight' field.
	 * @deprecated
	 */
	weight = 'weight',
}

/**
 * An obsolete enum.
 * @deprecated
 */
export enum ObsoleteEnum {
	unused = 'unused',
}";

            Assert.That(typesFile.Text, Contains.Substring(expectedEnums));

            const string expectedEnumUsage = @"widgetField?: WidgetField;";

            Assert.That(typesFile.Text, Contains.Substring(expectedEnumUsage));
        }
Exemplo n.º 10
0
        //This tests asserts that we can generate snippets with query options present
        public void GeneratesSnippetsWithQueryOptions()
        {
            //Arrange
            LanguageExpressions expressions = new JavascriptExpressions();

            var requestPayload = new HttpRequestMessage(HttpMethod.Get,
                                                        "https://graph.microsoft.com/v1.0/me/calendar/calendarView?startDateTime=2017-01-01T19:00:00.0000000&endDateTime=2017-01-07T19:00:00.0000000");
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = JavaScriptGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "let calendarView = await client.api('/me/calendar/calendarView?startDateTime=2017-01-01T19:00:00.0000000&endDateTime=2017-01-07T19:00:00.0000000')\r\n\t.get();";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemplo n.º 11
0
    void convertButton_Click(object sender, EventArgs e)
    {
        CompileResult result = JavaScriptGenerator.Generate(basicSourceTB.Text);

        if (result.IsSuccessful)
        {
            javascriptSourceTB.Text  = @"
function runProgram() {
	run('console', 22, 40, "     + result.StartFunction + @");
}
";
            javascriptSourceTB.Text += result.JavaScript;
        }
        else
        {
            javascriptSourceTB.Text = "COMPILE ERROR" + Environment.NewLine + Environment.NewLine + result.ResultMessage;
        }
    }
        public void GenerateExampleApiSuccess(bool typeScript)
        {
            ServiceInfo  service;
            const string fileName = "Facility.CodeGen.JavaScript.UnitTests.ExampleApi.fsd";
            var          parser   = new FsdParser();
            var          stream   = GetType().GetTypeInfo().Assembly.GetManifestResourceStream(fileName);

            Assert.IsNotNull(stream);
            using (var reader = new StreamReader(stream))
                service = parser.ParseDefinition(new ServiceDefinitionText(Path.GetFileName(fileName), reader.ReadToEnd()));

            var generator = new JavaScriptGenerator
            {
                GeneratorName = "JavaScriptGeneratorTests",
                TypeScript    = typeScript,
            };

            generator.GenerateOutput(service);
        }
Exemplo n.º 13
0
        //This tests asserts that we can generate snippets from json objects with nested objects inside them.
        public void GeneratesPostRequestSnippetFromJsonObject()
        {
            //Arrange
            LanguageExpressions expressions = new JavascriptExpressions();
            //json string with nested object properties
            const string userJsonObject = "{\r\n  \"accountEnabled\": true,\r\n  " +
                                          "\"displayName\": \"displayName-value\",\r\n  " +
                                          "\"mailNickname\": \"mailNickname-value\",\r\n  " +
                                          "\"userPrincipalName\": \"[email protected]\",\r\n " +
                                          " \"passwordProfile\" : {\r\n    \"forceChangePasswordNextSignIn\": true,\r\n    \"password\": \"password-value\"\r\n  }\r\n}";//nested passwordProfile Object

            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/users")
            {
                Content = new StringContent(userJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = JavaScriptGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "const user = {\r\n" +
                                           "  accountEnabled: true,\r\n" +
                                           "  displayName: 'displayName-value',\r\n" +
                                           "  mailNickname: 'mailNickname-value',\r\n" +
                                           "  userPrincipalName: '*****@*****.**',\r\n" +
                                           "  passwordProfile: {\r\n" +
                                           "    forceChangePasswordNextSignIn: true,\r\n" +
                                           "    password: '******'\r\n" +
                                           "  }\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "await client.api('/users')\r\n" +
                                           "\t.post(user);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemplo n.º 14
0
        //This tests asserts that we can generate snippets from json objects with nested objects inside them.
        public void GeneratesCorrectCreateCalendarEventJavascriptSnippet()
        {
            //Arrange
            LanguageExpressions expressions = new JavascriptExpressions();
            //json string with nested object properties
            const string userJsonObject = "{\r\n  \"subject\": \"Let's go for lunch\",\r\n" +
                                          "  \"body\": {\r\n" +
                                          "    \"contentType\": \"HTML\",\r\n" +
                                          "    \"content\": \"Does mid month work for you?\"\r\n" +
                                          "  },\r\n" +
                                          "  \"start\": {\r\n" +
                                          "      \"dateTime\": \"2019-03-15T12:00:00\",\r\n" +
                                          "      \"timeZone\": \"Pacific Standard Time\"\r\n" +
                                          "  },\r\n  " +
                                          "\"end\": {\r\n" +
                                          "      \"dateTime\": \"2019-03-15T14:00:00\",\r\n" +
                                          "      \"timeZone\": \"Pacific Standard Time\"\r\n" +
                                          "  },\r\n" +
                                          "  \"location\":{\r\n" +
                                          "      \"displayName\":\"Harry's Bar\"\r\n" +
                                          "  },\r\n" +
                                          "  \"attendees\": [\r\n" +
                                          "    {\r\n" +
                                          "      \"emailAddress\": {\r\n" +
                                          "        \"address\":\"[email protected]\",\r\n" +
                                          "        \"name\": \"Adele Vance\"\r\n" +
                                          "      },\r\n" +
                                          "      \"type\": \"required\"\r\n" +
                                          "    }\r\n" +
                                          "  ]" +
                                          "\r\n}";

            var requestPayload = new HttpRequestMessage(HttpMethod.Post, "https://graph.microsoft.com/v1.0/users")
            {
                Content = new StringContent(userJsonObject)
            };
            var snippetModel = new SnippetModel(requestPayload, ServiceRootUrl, _edmModel);

            //Act by generating the code snippet
            var result = JavaScriptGenerator.GenerateCodeSnippet(snippetModel, expressions);

            //Assert code snippet string matches expectation
            const string expectedSnippet = "const user = {\r\n" +
                                           "  subject: 'Let\\'s go for lunch',\r\n" +
                                           "  body: {\r\n" +
                                           "    contentType: 'HTML',\r\n" +
                                           "    content: 'Does mid month work for you?'\r\n" +
                                           "  },\r\n" +
                                           "  start: {\r\n" +
                                           "      dateTime: '2019-03-15T12:00:00',\r\n" +
                                           "      timeZone: 'Pacific Standard Time'\r\n" +
                                           "  },\r\n" +
                                           "  end: {\r\n" +
                                           "      dateTime: '2019-03-15T14:00:00',\r\n" +
                                           "      timeZone: 'Pacific Standard Time'\r\n" +
                                           "  },\r\n" +
                                           "  location: {\r\n" +
                                           "      displayName: 'Harry\\'s Bar'\r\n" +
                                           "  },\r\n" +
                                           "  attendees: [\r\n" +
                                           "    {\r\n" +
                                           "      emailAddress: {\r\n" +
                                           "        address: '*****@*****.**',\r\n" +
                                           "        name: 'Adele Vance'\r\n" +
                                           "      },\r\n" +
                                           "      type: 'required'\r\n" +
                                           "    }\r\n" +
                                           "  ]\r\n" +
                                           "};\r\n" +
                                           "\r\n" +
                                           "await client.api('/users')\r\n" +
                                           "\t.post(user);";

            //Assert the snippet generated is as expected
            Assert.Equal(AuthProviderPrefix + expectedSnippet, result);
        }
Exemplo n.º 15
0
 public ContentItemsComponent(IWebDriver driver)
 {
     virtualCanvasPage = driver;
     scriptGenerator   = new JavaScriptGenerator();
 }
Exemplo n.º 16
0
        private void processClientCode(NameValueCollection queryString, HttpContext context)
        {
            IProxyGenerator generator = null;
            ResourceManager resMan = new ResourceManager();
            string platform = queryString["platform"];
            if (string.IsNullOrEmpty(platform))
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("No Platform is Specified");
                return;
            }
            platform = platform.ToLower();
            if (platform == "csharp")
            {
                TypeMap tm = resMan.GetTypeMap("dotnet-csharp.typemap");
                generator = new CSharpGenerator(tm);
            }
            else if (platform == "java")
            {
                TypeMap tm = resMan.GetTypeMap("dotnet-java.typemap");
                generator = new JavaGenerator(tm);
            }
            else if (platform == "js-angularjs")
            {
                generator = new AngularGenerator();
            }
            else if (platform == "js-dojo")
            {
                generator = new JavaScriptGenerator();
            }
            else if (platform == "js-dojo-amd")
            {
                generator = new JavaScriptDojoAMDGenerator();
            }
            else if (platform == "flex")
            {
                generator = new FlexGenerator();
            }
            else if (platform == "objc")
            {
                TypeMap tm = resMan.GetTypeMap("dotnet-objc.typemap");
                generator = new ObjectiveCGenerator(tm);
            }

            if (generator == null)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("Unknown Platform");
                return;
            }

            string format = queryString["format"];
            format = format == null ? "zip" : format.ToLower();


            Service svc = createService();
            IDictionary<string, string> files = generator.Generate(svc);

            if (format == "zip")
            {
                byte[] buffer = ZipExporter.Export(files);
                MemoryStream ms = new MemoryStream(buffer);
                //context.Response.ContentType = "application/zip";
                context.Response.ContentType = "application/octet-stream";
                string fileName = string.Format("{0}_{1}.zip", svc.Name, platform);
                context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
                ms.CopyTo(context.Response.OutputStream);
                context.Response.OutputStream.Close();
            }
            else if (format == "json")
            {
                string s = JsonConvert.SerializeObject(files);
                context.Response.ContentType = "text/json";
                context.Response.Write(s);
            }
            else if (format == "xml")
            {

            }
            
        }