Skip to content

Commit c6b9097

Browse files
committed
Url-Encode UrlSegments (Fixes #90)
1 parent 75315bf commit c6b9097

File tree

2 files changed

+10
-19
lines changed

2 files changed

+10
-19
lines changed

specs/Specs_WebRequest.bas

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,15 @@ Public Function Specs() As SpecSuite
224224
.Expect(Request.FormattedResource).ToEqual "A/B/C/D"
225225
End With
226226

227+
With Specs.It("FormattedResource should url-encode Url Segments")
228+
Set Request = New WebRequest
229+
230+
Request.Resource = "{segment}"
231+
Request.AddUrlSegment "segment", "$&+,/:;=?@"
232+
233+
.Expect(Request.FormattedResource).ToEqual "%24%26%2B%2C%2F%3A%3B%3D%3F%40"
234+
End With
235+
227236
With Specs.It("FormattedResource should include querystring parameters")
228237
Set Request = New WebRequest
229238

@@ -302,24 +311,6 @@ Public Function Specs() As SpecSuite
302311
.Expect(Request.Body).ToEqual "{""A"":123,""B"":456}"
303312
End With
304313

305-
' TODO
306-
'With Specs.It("AddBodyParameter should throw TODO if adding to existing Body this is not Dictionary")
307-
' On Error Resume Next
308-
' Set Request = New WebRequest
309-
'
310-
' Request.Body = Array("A", "B", "C")
311-
' Request.AddBodyParameter "D", 123
312-
'
313-
' ' TODO Check actual error number
314-
' .Expect(Err.Number).ToNotEqual 0
315-
' Debug.Print Err.Number & ": " & Err.Description
316-
' .Expect(Err.Description).ToEqual _
317-
' "The existing body is not a Dictionary. Adding body parameters can only be used with Dictionaries"
318-
'
319-
' Err.Clear
320-
' On Error GoTo 0
321-
'End With
322-
323314
' AddCookie
324315
' --------------------------------------------- '
325316
With Specs.It("should AddCookie")

src/WebRequest.cls

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ Public Property Get FormattedResource() As String
477477

478478
' Replace url segments
479479
For Each web_Segment In Me.UrlSegments.Keys
480-
FormattedResource = VBA.Replace(FormattedResource, "{" & web_Segment & "}", Me.UrlSegments(web_Segment))
480+
FormattedResource = VBA.Replace(FormattedResource, "{" & web_Segment & "}", WebHelpers.UrlEncode(Me.UrlSegments(web_Segment)))
481481
Next web_Segment
482482

483483
' Add querystring

0 commit comments

Comments
 (0)