2018-07-30 Fred Gleason <fredg@paravelsystems.com>

* Modified the 'editcart.html' test harness to process UTF-8 strings
	correctly.
	* Modified the 'editcut.html' test harness to process UTF-8 strings
	correctly.
This commit is contained in:
Fred Gleason 2018-07-30 08:55:33 -04:00
parent 542fb7d6a6
commit 6888838f90
4 changed files with 99 additions and 65 deletions

View File

@ -17243,3 +17243,8 @@
* Added a 'SaveString' test method to the web API. * Added a 'SaveString' test method to the web API.
* Refactored the multipart-mime parser in 'RDFormPost' to process * Refactored the multipart-mime parser in 'RDFormPost' to process
UTF-8 strings correctly. UTF-8 strings correctly.
2018-07-30 Fred Gleason <fredg@paravelsystems.com>
* Modified the 'editcart.html' test harness to process UTF-8 strings
correctly.
* Modified the 'editcut.html' test harness to process UTF-8 strings
correctly.

View File

@ -2,7 +2,7 @@
// //
// Script for selecting cart label elements for the EditCart web method // Script for selecting cart label elements for the EditCart web method
// //
// (C) Copyright 2015 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2015-2018 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as // it under the terms of the GNU General Public License version 2 as
@ -18,10 +18,10 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// //
function EditCart_Field(field) function EditCart_Field(field,sep)
{ {
if(document.getElementById("USE_"+field).checked) { if(document.getElementById("USE_"+field).checked) {
return '&'+field+'='+UrlEncode(document.getElementById(field).value); return AddMimePart(field,document.getElementById(field).value,sep,false);
} }
return ''; return '';
} }
@ -29,39 +29,39 @@ function EditCart_Field(field)
function EditCart_MakePost() function EditCart_MakePost()
{ {
var form='COMMAND=14'; var sep=MakeMimeSeparator();
form+='&LOGIN_NAME='+document.getElementById("LOGIN_NAME").value; form=sep+"\r\n";
form+='&PASSWORD='+document.getElementById("PASSWORD").value;
form+='&TICKET='+document.getElementById("TICKET").value; form+=EditCart_Field('ASYNCHRONOUS',sep);
form+='&CART_NUMBER='+document.getElementById("CART_NUMBER").value; form+=EditCart_Field('ENFORCE_LENGTH',sep);
form+=EditCart_Field('GROUP_NAME',sep);
form+=EditCart_Field('TITLE',sep);
form+=EditCart_Field('ARTIST',sep);
form+=EditCart_Field('YEAR',sep);
form+=EditCart_Field('SONG_ID',sep);
form+=EditCart_Field('ALBUM',sep);
form+=EditCart_Field('LABEL',sep);
form+=EditCart_Field('CLIENT',sep);
form+=EditCart_Field('AGENCY',sep);
form+=EditCart_Field('PUBLISHER',sep);
form+=EditCart_Field('COMPOSER',sep);
form+=EditCart_Field('CONDUCTOR',sep);
form+=EditCart_Field('USER_DEFINED',sep);
form+=EditCart_Field('OWNER',sep);
form+=EditCart_Field('NOTES',sep);
form+=AddMimePart('LOGIN_NAME',document.getElementById('LOGIN_NAME').value,sep,false);
form+=AddMimePart('PASSWORD',document.getElementById('PASSWORD').value,sep,false);
form+=AddMimePart('TICKET',document.getElementById('TICKET').value,sep,false);
form+=AddMimePart('CART_NUMBER',document.getElementById('CART_NUMBER').value,sep,false);
if(document.getElementById("INCLUDE_CUTS").value.length==0) { if(document.getElementById("INCLUDE_CUTS").value.length==0) {
form+="&INCLUDE_CUTS=0"; form+=AddMimePart('INCLUDE_CUTS',document.getElementById('INCLUDE_CUTS').value,sep,false);
} }
else { form+=AddMimePart('COMMAND','14',sep,true);
form+="&INCLUDE_CUTS="+document.getElementById("INCLUDE_CUTS").value;
}
form+=EditCart_Field("ASYNCHRONOUS");
form+=EditCart_Field("ENFORCE_LENGTH");
form+=EditCart_Field("FORCED_LENGTH");
form+=EditCart_Field("GROUP_NAME");
form+=EditCart_Field("TITLE");
form+=EditCart_Field("ARTIST");
form+=EditCart_Field("YEAR");
form+=EditCart_Field("SONG_ID");
form+=EditCart_Field("ALBUM");
form+=EditCart_Field("LABEL");
form+=EditCart_Field("CLIENT");
form+=EditCart_Field("AGENCY");
form+=EditCart_Field("PUBLISHER");
form+=EditCart_Field("COMPOSER");
form+=EditCart_Field("CONDUCTOR");
form+=EditCart_Field("USER_DEFINED");
form+=EditCart_Field("OWNER");
form+=EditCart_Field("NOTES");
return form; return form;
} }
function EditCart_ShowPost() function EditCart_ShowPost()
{ {
alert('form: '+EditCart_MakePost()); alert('form: '+EditCart_MakePost());

View File

@ -18,10 +18,10 @@
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
// //
function EditCut_Field(field) function EditCut_Field(field,sep)
{ {
if(document.getElementById("USE_"+field).checked) { if(document.getElementById("USE_"+field).checked) {
return '&'+field+'='+UrlEncode(document.getElementById(field).value); return AddMimePart(field,document.getElementById(field).value,sep,false);
} }
return ''; return '';
} }
@ -29,44 +29,47 @@ function EditCut_Field(field)
function EditCut_MakePost() function EditCut_MakePost()
{ {
var form='COMMAND=15'; var sep=MakeMimeSeparator();
form+='&LOGIN_NAME='+document.getElementById("LOGIN_NAME").value; form=sep+"\r\n";
form+='&PASSWORD='+document.getElementById("PASSWORD").value;
form+='&TICKET='+document.getElementById("TICKET").value;
form+='&CART_NUMBER='+document.getElementById("CART_NUMBER").value;
form+='&CUT_NUMBER='+document.getElementById("CUT_NUMBER").value;
form+=EditCut_Field("EVERGREEN"); form+=EditCut_Field('EVERGREEN',sep);
form+=EditCut_Field("DESCRIPTION"); form+=EditCut_Field('DESCRIPTION',sep);
form+=EditCut_Field("OUTCUE"); form+=EditCut_Field('OUTCUE',sep);
form+=EditCut_Field("ISRC"); form+=EditCut_Field('ISRC',sep);
form+=EditCut_Field("ISCI"); form+=EditCut_Field('ISCI',sep);
form+=EditCut_Field("START_DATETIME"); form+=EditCut_Field('START_DATETIME',sep);
form+=EditCut_Field("END_DATETIME"); form+=EditCut_Field('END_DATETIME',sep);
form+=EditCut_Field("MON"); form+=EditCut_Field('MON',sep);
form+=EditCut_Field("TUE"); form+=EditCut_Field('TUE',sep);
form+=EditCut_Field("WED"); form+=EditCut_Field('WED',sep);
form+=EditCut_Field("THU"); form+=EditCut_Field('THU',sep);
form+=EditCut_Field("FRI"); form+=EditCut_Field('FRI',sep);
form+=EditCut_Field("SAT"); form+=EditCut_Field('SAT',sep);
form+=EditCut_Field("SUN"); form+=EditCut_Field('SUN',sep);
form+=EditCut_Field("START_DAYPART"); form+=EditCut_Field('START_DAYPART',sep);
form+=EditCut_Field("END_DAYPART"); form+=EditCut_Field('END_DAYPART',sep);
form+=EditCut_Field("WEIGHT"); form+=EditCut_Field('START_POINT',sep);
form+=EditCut_Field("START_POINT"); form+=EditCut_Field('END_POINT',sep);
form+=EditCut_Field("END_POINT"); form+=EditCut_Field('FADEUP_POINT',sep);
form+=EditCut_Field("FADEUP_POINT"); form+=EditCut_Field('FADEDOWN_POINT',sep);
form+=EditCut_Field("FADEDOWN_POINT"); form+=EditCut_Field('SEGUE_START_POINT',sep);
form+=EditCut_Field("SEGUE_START_POINT"); form+=EditCut_Field('SEGUE_END_POINT',sep);
form+=EditCut_Field("SEGUE_END_POINT"); form+=EditCut_Field('HOOK_START_POINT',sep);
form+=EditCut_Field("HOOK_START_POINT"); form+=EditCut_Field('HOOK_END_POINT',sep);
form+=EditCut_Field("HOOK_END_POINT"); form+=EditCut_Field('TALK_START_POINT',sep);
form+=EditCut_Field("TALK_START_POINT"); form+=EditCut_Field('TALK_END_POINT',sep);
form+=EditCut_Field("TALK_END_POINT"); form+=EditCut_Field('WEIGHT',sep);
form+=AddMimePart('LOGIN_NAME',document.getElementById('LOGIN_NAME').value,sep,false);
form+=AddMimePart('PASSWORD',document.getElementById('PASSWORD').value,sep,false);
form+=AddMimePart('TICKET',document.getElementById('TICKET').value,sep,false);
form+=AddMimePart('CART_NUMBER',document.getElementById('CART_NUMBER').value,sep,false);
form+=AddMimePart('CUT_NUMBER',document.getElementById('CUT_NUMBER').value,sep,false);
form+=AddMimePart('COMMAND','15',sep,true);
return form; return form;
} }
function EditCut_ShowPost() function EditCut_ShowPost()
{ {
alert('form: '+EditCut_MakePost()); alert('form: '+EditCut_MakePost());

View File

@ -42,6 +42,32 @@ function PostForm(form,url)
} }
function MakeMimeSeparator()
{
sep='----------------------------';
for(var i=0;i<27;i++) {
num=Math.floor(Math.random()*10);
sep+=num.toString();
}
return sep;
}
function AddMimePart(name,value,sep,is_last)
{
var form='Content-Disposition: form-data; name="'+name+'"\r\n';
form+='\r\n';
form+=value+'\r\n';
form+=sep;
if(is_last) {
form+='--';
}
form+='\r\n';
return form;
}
function UrlEncode(str) { function UrlEncode(str) {
var ret=new String; var ret=new String;