Skip to content

Commit

Permalink
indirection for local storage from backend
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatandrei committed May 2, 2020
1 parent 3d8222d commit 2e04e65
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 15 deletions.
Expand Up @@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.FileProviders.Physical;
using System;
using System.IO;
using System.IO.Pipelines;
Expand Down Expand Up @@ -116,22 +117,52 @@ public static void UseBlocklyUI(this IApplicationBuilder appBuilder)
new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());

mapFile("blocklyFiles", manifestEmbeddedProvider, appBuilder);
mapStorage(appBuilder)
//use local storage default
mapStorage(appBuilder);
}
/// <summary>
/// Uses the storage
/// </summary>
/// <param name="appBuilder">The application builder.</param>
public static void UseStorage(this IApplicationBuilder appBuilder)
{
mapStorage(appBuilder);
}

private static void mapStorage(IApplicationBuilder appBuilder)
{
var localStorage = "";
localStorage += "function BlocklySetItem(key,value)=>window.localStorage.setItem(key,value);";
localStorage += "function GetData_key_getItem()=>window.localStorage;";
localStorage += "function GetAllData()=>window.localStorage;";

var manifestEmbeddedProvider =
new ManifestEmbeddedFileProvider(Assembly.GetExecutingAssembly());

appBuilder.Map("/blocklyStorage", app =>
{
app.Run(async context =>
{
app.Run(async cnt=>
{
await Task.Delay(100);
string nameFile = "extensions/SaveToLocalStorage.js";
IFileInfo f = new PhysicalFileInfo(new FileInfo("wwwroot/"+nameFile));
if (!f.Exists)
{
f = manifestEmbeddedProvider.GetFileInfo("blocklyFiles/"+nameFile);
}
//TODO: add corect mime type for js files
using var stream = new MemoryStream();
using var cs = f.CreateReadStream();
byte[] buffer = new byte[2048]; // read in chunks of 2KB
int bytesRead;
while ((bytesRead = cs.Read(buffer, 0, buffer.Length)) > 0)
{
stream.Write(buffer, 0, bytesRead);
}
byte[] result = stream.ToArray();
// TODO: do something with the result
var m = new Memory<byte>(result);
await cnt.Response.BodyWriter.WriteAsync(m);
});
});

Expand Down
6 changes: 6 additions & 0 deletions src/NetCore2Blockly/NetCore2Blockly/NetCore2Blockly.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/NetCore2Blockly/TestBlocklyHtml/Startup.cs
Expand Up @@ -76,7 +76,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
//TODO: put this in the real application
// or copy the blockly.html files and others from wwwroot
//app.UseBlocklyUI();

app.UseStorage();//this is necessary , even for local storage
//this is not necessary to be added
app.UseSwagger();

Expand Down
18 changes: 9 additions & 9 deletions src/NetCore2Blockly/TestBlocklyHtml/wwwroot/blockly.html
Expand Up @@ -13,15 +13,15 @@
<script src="/blockly/javascript_compressed.js"></script>
<script src="/blockly/en.js"></script>
<script src="/blockly/wait_block.js"></script>
<script src="blockly/ifxhr.js"></script>
<script src="blockly/blocklyControls.js"></script>
<script src="others/jszip.min.js"></script>
<script src="others/FileSaver.min.js"></script>
<script src="blockly/BlocklyXHRWrapper.js"></script>
<script src="blockly/convertCSV.js"></script>
<script src="blockly/exportFile.js"></script>
<script src="blockly/blocklyXHR.js"></script>
<script src="extensions/SaveToLocalStorage.js"></script>
<script src="/blockly/ifxhr.js"></script>
<script src="/blockly/blocklyControls.js"></script>
<script src="/others/jszip.min.js"></script>
<script src="/others/FileSaver.min.js"></script>
<script src="/blockly/BlocklyXHRWrapper.js"></script>
<script src="/blockly/convertCSV.js"></script>
<script src="/blockly/exportFile.js"></script>
<script src="/blockly/blocklyXHR.js"></script>
<script src="/blocklyStorage"></script>
<!--doNotCopyToFinal-->
<script src="doNotCopy/testing.js"></script>
<script src="doNotCopy/JRTemplating.js"></script>
Expand Down

0 comments on commit 2e04e65

Please sign in to comment.