Exemple #1
0
        public static async Task <RISCVIntegrationContext> Run(RISCVIntegrationContext context)
        {
            using (var client = new HttpClient())
            {
                var request = new InvokeRequest()
                {
                    ExtensionClasses = context.ExtensionClasses,
                    Source           = context.SourceSnapshot,
                    Operations       = context.Operations,
                    ResultRules      = context.ResultFileRules
                };

                var requestPayload = JsonHelper.Serialize(request);

                var test = JsonHelper.Deserialize <InvokeRequest>(requestPayload);

                var requestContent = new StringContent(requestPayload, Encoding.UTF8, "application/json");
                var url            = $"{context.Endpoint.RISCV}/Invoke";

                var response = await client.PostAsync(url, requestContent);

                if (response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    var exceptionPayload = await response.Content.ReadAsStringAsync();

                    throw new Exception($"Failed to post data to '{url}': {exceptionPayload}");
                }

                var responsePayload = await response.Content.ReadAsStringAsync();

                var invokeResponse = JsonHelper.Deserialize <InvokeResponse>(responsePayload);

                return(context.WithResultSnapshot(invokeResponse.Result));
            }
        }
Exemple #2
0
        public static async Task Make(RISCVIntegrationContext context)
        {
            var zipFile = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            try
            {
                using (var client = new HttpClient())
                {
                    var url = $"{context.Endpoint.RISCV}/make/{context.MakeTarget}";
                    var zfe = new ZipEntryFactory {
                        IsUnicodeText = true
                    };
                    context.RootFolder.CompressFolder(zipFile);
                    var content = File.ReadAllBytes(zipFile);

                    var response = await client.PostAsync(url, new StreamContent(new MemoryStream(content)));

                    if (response.StatusCode != HttpStatusCode.OK)
                    {
                        var exception = await response.Content.ReadAsStringAsync();

                        throw new Exception(exception);
                    }
                    content = await response.Content.ReadAsByteArrayAsync();

                    File.WriteAllBytes(zipFile, content);
                    zipFile.ExtractZip(context.RootFolder);
                }
            }
            finally
            {
                zipFile.DeleteFileIfExists();
            }
        }
Exemple #3
0
        public static RISCVIntegrationContext DefaultContext(string rootPath)
        {
            var context = new RISCVIntegrationContext()
                          .WithEndpoint(new RISCVIntegrationEndpoint())
                          .WithExtensionClasses(
                new ExtensionClasses()
                .Text("")
                .Text("lds")
                .Text("s")
                .Text("c")
                .Text("cpp")
                .Text("h")
                .Binary("bin")
                .Binary("elf")
                .Text("map")
                )
                          .WithRootFolder(rootPath)
                          .WithAllRegisteredFiles()
                          .WithOperations(new BashInvocation("make firmware.bin"))
                          .TakeModifiedFiles();

            return(context);
        }