NetTalk Central

NetTalk Web Server => Web Server - Ask For Help => Topic started by: debzidoodle on April 29, 2014, 04:57:05 AM

Title: Function for Percent Encoding?
Post by: debzidoodle on April 29, 2014, 04:57:05 AM
Hi Bruce,

Is there a function that will perform Percent Encoding?  The p_web.EncodeWebString is a little to agressive, percent encoding is like the PHP function rawurlencode https://php.net/manual/en/function.rawurlencode.php

Thanks
Debra
Title: Re: Function for Percent Encoding?
Post by: Bruce on April 30, 2014, 01:57:23 AM
Hi Debra,

>> The p_web.EncodeWebString is a little too aggressive...

You need to qualify this a bit. This method does "percent encoding" but it does take a "flags" parameter which can alter the behavior a bit. Flags is a "bitwise" parameter, meaning you can add these equates together.

For example, setting flags to Net:Dos means the following characters are not encoded
/ \ . $

If flags  includes net:NoHex or net:NoPlus then spaces are left along.
If flags contains net:BigPlus then spaces are encoded to %20.
Otherwise spaces are encoded as +

if flags contains net:NoColon then colons are not encoded.

All letters (A-Z and a-z) and numbers (0-9) are not encoded.

Everything not mentioned above, is encoded.

Sorry to answer your question more completely, I need to know what you find "too aggressive" about it.  :)

Cheers
Bruce



Title: Re: Function for Percent Encoding?
Post by: debzidoodle on April 30, 2014, 04:40:30 AM
The flags is what I was missing...  I overlooked that somehow   :)  

It almost gets me where I need to be with the net:dos, except I need the / encoded.  Or you could look at it another way, I need to keep the . with a non-flag encode.

I am doing oAuth, and I have to make the strings encoded in my signature.  So here is an example of a string as it has to be encoded for the signature to be valid
This is my string
Code: [Select]
oauth_callback='http://10.211.55.4:88/qbGetOAuthAccessToken'I need it to look like this
Code: [Select]
oauth_callback_Encoded = 'http%3A%2F%2F10.211.55.4%3A88%2FqbGetOAuthAccessToken'
p_web.encodeWebstring(oauth_callback,net:dos) gives me 'http%3A//10.211.55.4%3A88/qbGetOAuthAccessToken'

and

p_web.encodeWebstring(oauth_callback) gives me 'http%3A%2F%2F10%2E211%2E55%2E4%3A88%2FqbGetOAuthAccessToken'

Edit:
Here is a description of what I need:
Quote
Returns a string in which all non-alphanumeric characters except -_.~ have been replaced with a percent (%) sign followed by two hex digits. This is the encoding described in » RFC 3986 for protecting literal characters from being interpreted as special URL delimiters, and for protecting URLs from being mangled by transmission media with character conversions (like some email systems).
I found this here: http://stackoverflow.com/questions/996139/urlencode-vs-rawurlencode
Thank you!

Debra
Title: Re: Function for Percent Encoding?
Post by: Bruce on April 30, 2014, 09:50:02 PM
Hi Debra,

I've added a flag net:php for the next build which preserves that combination. I suspect you'll want to use it in combination with net:BigPlus

Cheers
Bruce
Title: Re: Function for Percent Encoding?
Post by: debzidoodle on May 01, 2014, 12:19:09 PM
Thank you!!!