cancel
Showing results for 
Search instead for 
Did you mean: 

Trim parentheses via tcl

igeo
Nimbostratus
Nimbostratus

I have the following URL and would like to remove the parentheses (both) by using an iRule (TCL):

 

 

 

http://ing1.example.com:31100/test1/test1.json/Streams(Type_4000000)

 

 

 

 

 

when HTTP_REQUEST {
  if { ([HTTP::host] eq "ing1.example.com") or ([HTTP::host] eq "ing1.example.com" ) and ([HTTP::uri] contains "Streams")}
      set NEW_URI [string trimleft [HTTP::uri] ( or )]
  }

 

 

 

Is it configured correctly?

thank you.

 

1 ACCEPTED SOLUTION

xuwen
Cirrostratus
Cirrostratus
when HTTP_REQUEST priority 500 {
    if { ([HTTP::host] eq "ing1.example.com:31100") and ([HTTP::uri] contains "Streams") } {
        set old_uri [HTTP::uri]
        HTTP::uri "[string map {( "" ) ""} $old_uri]"
    }
}

View solution in original post

3 REPLIES 3

xuwen
Cirrostratus
Cirrostratus

use string map to remove :

tcl test:

(bin) 68 % set uri "/test1/test1.json/Streams(Type_4000000)"
/test1/test1.json/Streams(Type_4000000)
(bin) 69 % set new_uri [string map {( "" ) ""} $uri]
/test1/test1.json/StreamsType_4000000
(bin) 70 % 

 

igeo
Nimbostratus
Nimbostratus

There was an error when trying to save, so I added braces {}

{set new_uri [string map {( "" ) ""} $uri]}

However, this iRule doesn't remove the parentheses. The URL contains also a port, is it needed at the HTTP::host ?

xuwen
Cirrostratus
Cirrostratus
when HTTP_REQUEST priority 500 {
    if { ([HTTP::host] eq "ing1.example.com:31100") and ([HTTP::uri] contains "Streams") } {
        set old_uri [HTTP::uri]
        HTTP::uri "[string map {( "" ) ""} $old_uri]"
    }
}