From 6888838f90de2d348f3f5fe7a02b91e67d6e2832 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Mon, 30 Jul 2018 08:55:33 -0400 Subject: [PATCH] 2018-07-30 Fred Gleason * Modified the 'editcart.html' test harness to process UTF-8 strings correctly. * Modified the 'editcut.html' test harness to process UTF-8 strings correctly. --- ChangeLog | 5 +++ web/tests/editcart.js | 60 +++++++++++++++++------------------ web/tests/editcut.js | 73 ++++++++++++++++++++++--------------------- web/tests/utils.js | 26 +++++++++++++++ 4 files changed, 99 insertions(+), 65 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ab942a1..f5a51458 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17243,3 +17243,8 @@ * Added a 'SaveString' test method to the web API. * Refactored the multipart-mime parser in 'RDFormPost' to process UTF-8 strings correctly. +2018-07-30 Fred Gleason + * Modified the 'editcart.html' test harness to process UTF-8 strings + correctly. + * Modified the 'editcut.html' test harness to process UTF-8 strings + correctly. diff --git a/web/tests/editcart.js b/web/tests/editcart.js index e42ea7da..0ebcf407 100644 --- a/web/tests/editcart.js +++ b/web/tests/editcart.js @@ -2,7 +2,7 @@ // // Script for selecting cart label elements for the EditCart web method // -// (C) Copyright 2015 Fred Gleason +// (C) Copyright 2015-2018 Fred Gleason // // 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 @@ -18,10 +18,10 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -function EditCart_Field(field) +function EditCart_Field(field,sep) { if(document.getElementById("USE_"+field).checked) { - return '&'+field+'='+UrlEncode(document.getElementById(field).value); + return AddMimePart(field,document.getElementById(field).value,sep,false); } return ''; } @@ -29,39 +29,39 @@ function EditCart_Field(field) function EditCart_MakePost() { - var form='COMMAND=14'; - form+='&LOGIN_NAME='+document.getElementById("LOGIN_NAME").value; - form+='&PASSWORD='+document.getElementById("PASSWORD").value; - form+='&TICKET='+document.getElementById("TICKET").value; - form+='&CART_NUMBER='+document.getElementById("CART_NUMBER").value; + var sep=MakeMimeSeparator(); + form=sep+"\r\n"; + + form+=EditCart_Field('ASYNCHRONOUS',sep); + 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) { - form+="&INCLUDE_CUTS=0"; + form+=AddMimePart('INCLUDE_CUTS',document.getElementById('INCLUDE_CUTS').value,sep,false); } - else { - 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"); + form+=AddMimePart('COMMAND','14',sep,true); return form; } + function EditCart_ShowPost() { alert('form: '+EditCart_MakePost()); diff --git a/web/tests/editcut.js b/web/tests/editcut.js index 8da0b93c..bf03c480 100644 --- a/web/tests/editcut.js +++ b/web/tests/editcut.js @@ -18,10 +18,10 @@ // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. // -function EditCut_Field(field) +function EditCut_Field(field,sep) { if(document.getElementById("USE_"+field).checked) { - return '&'+field+'='+UrlEncode(document.getElementById(field).value); + return AddMimePart(field,document.getElementById(field).value,sep,false); } return ''; } @@ -29,44 +29,47 @@ function EditCut_Field(field) function EditCut_MakePost() { - var form='COMMAND=15'; - form+='&LOGIN_NAME='+document.getElementById("LOGIN_NAME").value; - 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; + var sep=MakeMimeSeparator(); + form=sep+"\r\n"; - form+=EditCut_Field("EVERGREEN"); - form+=EditCut_Field("DESCRIPTION"); - form+=EditCut_Field("OUTCUE"); - form+=EditCut_Field("ISRC"); - form+=EditCut_Field("ISCI"); - form+=EditCut_Field("START_DATETIME"); - form+=EditCut_Field("END_DATETIME"); - form+=EditCut_Field("MON"); - form+=EditCut_Field("TUE"); - form+=EditCut_Field("WED"); - form+=EditCut_Field("THU"); - form+=EditCut_Field("FRI"); - form+=EditCut_Field("SAT"); - form+=EditCut_Field("SUN"); - form+=EditCut_Field("START_DAYPART"); - form+=EditCut_Field("END_DAYPART"); - form+=EditCut_Field("WEIGHT"); - form+=EditCut_Field("START_POINT"); - form+=EditCut_Field("END_POINT"); - form+=EditCut_Field("FADEUP_POINT"); - form+=EditCut_Field("FADEDOWN_POINT"); - form+=EditCut_Field("SEGUE_START_POINT"); - form+=EditCut_Field("SEGUE_END_POINT"); - form+=EditCut_Field("HOOK_START_POINT"); - form+=EditCut_Field("HOOK_END_POINT"); - form+=EditCut_Field("TALK_START_POINT"); - form+=EditCut_Field("TALK_END_POINT"); + form+=EditCut_Field('EVERGREEN',sep); + form+=EditCut_Field('DESCRIPTION',sep); + form+=EditCut_Field('OUTCUE',sep); + form+=EditCut_Field('ISRC',sep); + form+=EditCut_Field('ISCI',sep); + form+=EditCut_Field('START_DATETIME',sep); + form+=EditCut_Field('END_DATETIME',sep); + form+=EditCut_Field('MON',sep); + form+=EditCut_Field('TUE',sep); + form+=EditCut_Field('WED',sep); + form+=EditCut_Field('THU',sep); + form+=EditCut_Field('FRI',sep); + form+=EditCut_Field('SAT',sep); + form+=EditCut_Field('SUN',sep); + form+=EditCut_Field('START_DAYPART',sep); + form+=EditCut_Field('END_DAYPART',sep); + form+=EditCut_Field('START_POINT',sep); + form+=EditCut_Field('END_POINT',sep); + form+=EditCut_Field('FADEUP_POINT',sep); + form+=EditCut_Field('FADEDOWN_POINT',sep); + form+=EditCut_Field('SEGUE_START_POINT',sep); + form+=EditCut_Field('SEGUE_END_POINT',sep); + form+=EditCut_Field('HOOK_START_POINT',sep); + form+=EditCut_Field('HOOK_END_POINT',sep); + form+=EditCut_Field('TALK_START_POINT',sep); + form+=EditCut_Field('TALK_END_POINT',sep); + 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; } + function EditCut_ShowPost() { alert('form: '+EditCut_MakePost()); diff --git a/web/tests/utils.js b/web/tests/utils.js index 36993756..00932b00 100644 --- a/web/tests/utils.js +++ b/web/tests/utils.js @@ -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) { var ret=new String;