Cleaning up stack URLs

Devin Asay devin_asay at byu.edu
Tue Apr 24 17:26:56 EDT 2007


On Apr 24, 2007, at 2:55 PM, Peter T. Evensen wrote:

> Could you do something like this?
>
> set the itemdelimiter to "/"
> repeat with i = 3 to the number of items in tURL
>    put URLEncode(item i of tURL) into item i of tURL
> end repeat

Yes, I think that's basically what Martin was getting at. It's just  
that URLEncode changes space to '+', so you'd have to handle that as  
a special case.

Devin

>
> Martin Baxter wrote:
>> Devin Asay wrote:
>>> I'm working on a stack that launches stacks from the web with 'go  
>>> stack URL'.
>>>
>>> I know there are certain characters that are illegal or unsafe in  
>>> URL strings. (See http://tools.ietf.org/html/rfc1738) These  
>>> include space, quote and a number of others. Most web browsers  
>>> automatically escape these characters for you, so, e.g., a space  
>>> is converted to '%20' before the browser sends the request to the  
>>> server.
>>>
>>> I'm about to start writing a function that checks a potential  
>>> stack URL for illegal and unsafe characters and converts them to  
>>> escape sequences, but I don't want to reinvent the wheel if such  
>>> a thing already exists.
>>>
>>> Am I right that there is no equivalent functionality built into  
>>> Rev? I know about URLEncode(), of course, but that serves a  
>>> different purpose--formatting strings for POSTing, rather than  
>>> formatting strings for retrieving files from a server (a GET  
>>> request?) Am I understanding this correctly?
>>>
>>
>> I think you are right Devin, unfortunately. Anyway, you can't give  
>> the whole url to urlencode as it will also encode the slashes and  
>> colons etc. etc.
>>
>> Looking at my php manual, I find php has 2 functions:
>> urlencode()
>> rawurlencode()
>>
>> and the difference is described as the treatment of space: + in  
>> urlencode, %20 in rawurlencode
>>
>> This is a surmise, but I think that RR urlencode is the same as  
>> php's identically named function. If so, a shortcut might be to  
>> replace the spaces yourself before applying urlencode() which  
>> should deal with any remaining problem characters
>>
>> something like (untested)
>>
>> put "http://www.whatever.com/" into tdomainpart
>> put "exciting content/big file.html" into tpath
>> replace space with "%20" in tpath
>> set itemdelimiter to "/"
>> put empty into t_assemble
>> repeat with i = 1 to the number of items in tpath
>>   put urlencode(item i of tpath) into item i of tencodedpath
>> end repeat
>>
>> put tdomainpart & tencodedpart into tencodedurl
>>
>>
>>> A related issue is, are there characters that are disallowed as  
>>> filenames for rev stackfiles? I can't find any such list  
>>> anywhere. I suppose this would be determined by the host OS?
>>>
>>
>> That's what I would expect. I would avoid naming a rev stack  
>> beginning with a tilde though, because of the temp file made when  
>> saving.

Devin Asay
Humanities Technology and Research Support Center
Brigham Young University




More information about the use-livecode mailing list