const result = $id('Result');
var r, result1, result2;
onReady(async () =>
{
PageEvents();
await InitAsync();
});
function PageEvents()
{
document.on("click", async function (e)
{
if (e.target.id && typeof window[e.target.id] === "function")
{
const func = window[e.target.id].call(e, e);
if (func instanceof Promise)
await func;
}
});
$id("UploadExample").on("change", function (e)
{
StartUpload(e);
});
}
async function InitAsync()
{
await netproxyasync("./api/HelloWorld"); // Makes session (and cookie)
}
function C(s, jscript)
{
if (eval(jscript))
result.innerHTML += "
" + s + " :: " + jscript + '
\n';
else
result.innerHTML += "" + s + " :: " + jscript + '
\n';
}
async function UnitTest()
{
result.innerText = '';
var user = { user: 'alphons' };
r = await netproxyasync("./api/GetCookie");
C("Cookies", "r.Value == '1234'");
r = await netproxyasync("./api/GetHeader");
C("Headers (Accept)", "r.Value == '*/*'");
r = await netproxyasync("./api/QueryString?question=answer");
C("QueryString", "r.Value == 'answer'");
var formData = new FormData();
formData.append("Name", "Alphons");
formData.append("Age", "25")
r = await netproxyasync("/api/PostIt", formData);
C("Post Form Data", "r.Name == 'Alphons' && r.Age ==25");
r = await netproxyasync("./api/SimpleString1", user);
C("SimpleString1", "r.user == 'alphons'");
r = await netproxyasync("./api/SimpleString2", user);
C("SimpleString2", "r.user == 'alphons'");
r = await netproxyasync("./api/SimpleString3", { user: 'alphons' });
C("SimpleString3", "r.user == 'alphons'");
r = await netproxyasync("./api/SimpleString4", { user: 'alphons' });
C("SimpleString4", "r.user == 'alphons'");
r = await netproxyasync("./api/PostEnumAsString", { status: 'Active' });
C("PostEnumAsString", "r.Status == 'Active' && r.Value == 1");
var users = { "users": ["admins", "editors", null, "sisters"] };
r = await netproxyasync("./api/ArrayOfStrings1", users);
C("ArrayOfStrings1", "r.users && r.users.length == 4");
r = await netproxyasync("./api/ArrayOfStrings2", ["admins", "editors", null, "sisters"]);
C("ArrayOfStrings2", "r.users && r.users.length == 4");
r = await netproxyasync("./api/ArrayOfStrings3", users);
C("ArrayOfStrings3", "r.users && r.users.length == 4");
r = await netproxyasync("./api/ArrayOfStrings4", users);
C("ArrayOfStrings4", "r.users && r.users.length == 4");
var arrayofarrayofstrings = { "users": [["admins", "0"], ["editors", "1"], null, ["sisters", "3"]] };
r = await netproxyasync("./api/ArrayOfArrayOfStrings1", arrayofarrayofstrings);
C("ArrayOfArrayOfStrings1", "r.users && r.users.length == 4");
r = await netproxyasync("./api/ArrayOfArrayOfStrings2", arrayofarrayofstrings);
C("ArrayOfArrayOfStrings2", "r.users && r.users.length == 4");
r = await netproxyasync("./api/TwoParameters1", { a: 'aa aa', b: 'bbb bbb' });
C("TwoParameters1", "r.a =='aa aa' && r.b =='bbb bbb'");
r = await netproxyasync("./api/TwoParameters2", { a: 'aa aa', b: 'bbb bbb' });
C("TwoParameters2", "r.a =='aa aa' && r.b =='bbb bbb'");
r = await netproxyasync("./api/TwoParameters3", { a: { user: 'aa aa' }, b: { user: 'bbb bbb' } });
C("TwoParameters3", "r.a =='aa aa' && r.b =='bbb bbb'");
r = await netproxyasync("./api/ListOfDoubles", { list: [1.2, 3.4, 5.6, null, 7.8] });
C("ListOfDoubles", "r.list[0] == 1.2");
C("ListOfDoubles", "r.list[1] == 3.4");
C("ListOfDoubles", "r.list[2] == 5.6");
C("ListOfDoubles", "r.list[3] == null");
C("ListOfDoubles", "r.list[4] == 7.8");
//r = await netproxyasync("./api/ComplexArrayArray",
// {
// Group: "groupy",
// List:
// {
// Name: "My Name is",
// "Users":
// [
// ["admins", "0"],
// ["editors", "1"],
// null,
// ["sisters", "3"]
// ]
// }
// });
r = await netproxyasync("./api/ComplexDouble", { F: 123.456 });
C("ComplexDouble", "r.F == 123.456");
r = await netproxyasync("./api/ComplexDouble", { F: '123.456' }); // Needs JsonNumberHandling.AllowReadingFromString
C("ComplexDouble", "r.F == 123.456");
r = await netproxyasync("./api/ComplexSingleObject", { a: 'aaa', b: 'bbb' });
C("ComplexSingleObject", "r.AA.a== 'aaa'");
C("ComplexSingleObject", "r.AA.b== 'bbb'");
r = await netproxyasync("./api/ComplexString", { Name: 'This is a test' });
C("ComplexString", "r.Name == 'This is a test'");
r = await netproxyasync("./api/ComplexStringInt", { Name: 'This is a test', A: 123 });
C("ComplexStringInt", "r.Name == 'This is a test'");
C("ComplexStringInt", "r.A == 123");
r = await netproxyasync("./api/ComplexListOfStrings", { ListOfStrings: ['a', '', 'b', null, 'c'] });
C("ComplexList", "r.ListOfStrings[0]== 'a'");
C("ComplexList", "r.ListOfStrings[1]== ''");
C("ComplexList", "r.ListOfStrings[2]== 'b'");
C("ComplexList", "r.ListOfStrings[3]== null");
C("ComplexList", "r.ListOfStrings[4]== 'c'");
r = await netproxyasync("./api/ComplexListOfInts", { ListOfInts: [0, 1, 2, null, 4] });
C("ComplexListInt", "r.ListOfInts[0]== 0");
C("ComplexListInt", "r.ListOfInts[1]== 1");
C("ComplexListInt", "r.ListOfInts[2]== 2");
C("ComplexListInt", "r.ListOfInts[3]== null");
C("ComplexListInt", "r.ListOfInts[4]== 4");
r = await netproxyasync("./api/ComplexArray", [{ a: 'a', b: null }, null, { a: 'c', b: 'd' }]);
C("ComplexArray", "r.list.length == 3");
if (r.list.length == 3)
{
C("ComplexArray", "r.list[0].a== 'a'")
C("ComplexArray", "r.list[0].b== null");
C("ComplexArray", "r.list[1]== null");
C("ComplexArray", "r.list[2].a== 'c'");
C("ComplexArray", "r.list[2].b== 'd'");
}
r = await netproxyasync("./api/ComplexArrayArray",
{
Group: "groupy",
List:
{
Name: "My Name is",
"Users":
[
["admins", "0"],
["editors", "1"],
null,
["sisters", "3"]
]
}
});
C("ComplexArrayArray", "r.Group== 'groupy'");
C("ComplexArrayArray", "r.List.Name== 'My Name is'");
C("ComplexArrayArray", "r.List.Users.length== 4");
if (r.List.Users.length > 0)
{
C("ComplexArrayArray", "r.List.Users[0][0]== 'admins'");
C("ComplexArrayArray", "r.List.Users[0][1]== '0'");
C("ComplexArrayArray", "r.List.Users[1][0]== 'editors'");
C("ComplexArrayArray", "r.List.Users[1][1]== '1'");
C("ComplexArrayArray", "r.List.Users[2]== null");
}
if (r.List.Users.length == 4)
{
C("ComplexArrayArray", "r.List.Users[3][0]== 'sisters'");
C("ComplexArrayArray", "r.List.Users[3][1]== '3'");
}
r = await netproxyasync("./api/ComplexArrayArrayClass",
{
Testing: true,
Relaxed: false,
Group: "Nice Group",
GroupInfo:
{
Name: "My Name is",
"Users":
[
[{ Name: "User00", Alias: ['aliasa', 'aliasb', 'aliasc'] }, { Name: "User01" }],
[{ Name: "User10" }, { Name: "User11" }],
[{ Name: "User20" }, { Name: "User21" }]
]
}
});
C("ComplexArrayArrayClass", "r.Testing== true");
C("ComplexArrayArrayClass", "r.Relaxed== false");
C("ComplexArrayArrayClass", "r.Group== 'Nice Group'");
C("ComplexArrayArrayClass", "r.GroupInfo.Name== 'My Name is'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users.length== 3");
if (r.GroupInfo.Users.length > 0)
{
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][0].Name== 'User00'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][0].Alias.length== 3");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][1].Name== 'User01'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][1].Alias== null");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[1][0].Name== 'User10'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[1][0].Alias== null");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[1][1].Name== 'User11'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[1][1].Alias== null");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[2][0].Name== 'User20'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[2][0].Alias== null");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[2][1].Name== 'User21'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[2][1].Alias== null");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][0].Alias[0]== 'aliasa'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][0].Alias[1]== 'aliasb'");
C("ComplexArrayArrayClass", "r.GroupInfo.Users[0][0].Alias[2]== 'aliasc'");
}
// Checking, run till end
netproxy("./api/GetEnums", null, function ()
{
var data = this;
});
var product = { StatusType: 1, AddressType: 2 };
netproxy("./api/PostEnums", { product: product }, function ()
{
var data = this;
});
netproxy("./api/PostEnum", { status: 1 }, function ()
{
var data = this;
});
netproxy("./api/NotANumber", null, function ()
{
var a = this.Value;
});
try
{
r = await netproxyasync("./api/NotANumber");
}
catch (e)
{
}
C("NotANumber", "r.Value == 'NaN'");
C("ready (must be false and red)", "true == false");
}
//netproxy("./api/ComplexDouble", { F: null });
//netproxy("./api/ComplexDouble", { F: 123.456 });
//netproxy("./api/ComplexString", { Name: null });
//netproxy("./api/ComplexString", { Name: 12.34 });
//netproxy("./api/ComplexString", { Name: 'abc def' });
//netproxy("./api/ComplexStringInt", { Name: 'abc def', A : 123 });
//netproxy("./api/ComplexList", { list: [ "a", "b" , "", null, "d"] });
//netproxy("./api/ComplexList", { list: ["a", "", "b", null, "c"] }); // "a" null "b" "b" "c" WTF?
//netproxy("./api/ComplexListNullableDouble", { list: [1.2, 3.4, 5.6, null, 7.8] });
//netproxy("./api/ComplexListObjecs", { list: [1.2, null, 3 ] }); // numbers to string, using CultureInfo!
//netproxy("./api/ComplexStringList", { Name: 'abc def', list: [ 'a', 'b' , 'c'] });
//netproxy("./api/ComplexObjectArray", { objB: { Name: 'Alphons', List: [{ a: 'a', b: 'b' }, { a: 'c', b: 'd' }] } });
function ProgressHandler(event)
{
var percent = 0;
var position = event.loaded || event.position;
var total = event.total;
if (event.lengthComputable)
percent = Math.ceil(position / total * 100);
result.innerText = "Uploading " + percent + "%";
}
function StartUpload(e)
{
var file = e.target.files[0];
result.innerText = 'Uploading';
var formData = new FormData();
formData.append("files", file, file.name);
formData.append("files", file, file.name);
formData.append("Form1", "another var");
netproxy("/api/Upload", formData, function ()
{
result.innerText = 'Ready Length:' + this.Length + " ExtraValue:" + this.Form1 + " path:" + this.filePath;
}, window.NetProxyErrorHandler, ProgressHandler);
}
async function MultiBinderTest()
{
result.innerText = '';
result1 = await netproxyasync("./api/DemoProposal/two?SomeParameter3=three&SomeParameter6=six",
{
"SomeParameter4": // Now the beast has a name
{
Name: "four",
"Users":
[
[{ Name: "User00", Alias: ['aliasa', 'aliasb', 'aliasc'] }, { Name: "User01" }],
[{ Name: "User10" }, { Name: "User11" }],
[{ Name: "User20" }, { Name: "User21" }]
]
},
"SomeParameter5": "five" // double binder
});
result.innerText = 'some alias: ' + result1.SomeParameter4.Users[0][0].Alias[1];
result2 = await netproxyasync("./api/DemoProposal2/two?SomeParameter3=three&SomeParameter6=six",
{
"SomeParameter4": // Now the beast has a name
{
Name: "four",
"Users":
[
[{ Name: "User00", Alias: ['aliasa', 'aliasb', 'aliasc'] }, { Name: "User01" }],
[{ Name: "User10" }, { Name: "User11" }],
[{ Name: "User20" }, { Name: "User21" }]
]
},
"SomeParameter5": "five" // double binder
});
result.innerText += ' other alias: ' + result2.SomeParameter4.Users[0][0].Alias[2];
}
async function PostIt()
{
var formData = new FormData();
formData.append("Name", "Alphons");
formData.append("Age", "25")
var r = netproxyasync("/api/PostIt", formData);
}