Skip to content

Commit 2c71dd5

Browse files
committed
Merge pull request #26 from timhall/response-headers
Include response headers with response
2 parents 6e2beb5 + efe420e commit 2c71dd5

File tree

6 files changed

+51
-7
lines changed

6 files changed

+51
-7
lines changed

specs/Excel-REST - Specs.xlsm

37.4 KB
Binary file not shown.

specs/RestClientAsyncSpecs.bas

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,29 @@ Public Function Specs() As SpecSuite
107107
.Expect(BodyToString).ToEqual "Howdy!"
108108
End If
109109
End With
110-
110+
111+
With Specs.It("should include headers in response")
112+
Set Request = New RestRequest
113+
Request.Resource = "cookie"
114+
115+
Client.ExecuteAsync Request, SimpleCallback
116+
Wait WaitTime
117+
.Expect(AsyncResponse).ToBeDefined
118+
If Not AsyncResponse Is Nothing Then
119+
.Expect(AsyncResponse.Headers.count).ToBeGTE 5
120+
121+
Dim Header As Dictionary
122+
Dim NumCookies As Integer
123+
For Each Header In AsyncResponse.Headers
124+
If Header("key") = "Set-Cookie" Then
125+
NumCookies = NumCookies + 1
126+
End If
127+
Next Header
128+
129+
.Expect(NumCookies).ToEqual 5
130+
End If
131+
End With
132+
111133
With Specs.It("should include cookies in response")
112134
Set Request = New RestRequest
113135
Request.Resource = "cookie"

specs/RestClientSpecs.bas

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,24 @@ Public Function Specs() As SpecSuite
175175

176176
.Expect(BodyToString).ToEqual "Howdy!"
177177
End With
178+
179+
With Specs.It("should include headers in response")
180+
Set Request = New RestRequest
181+
Request.Resource = "cookie"
182+
183+
Set Response = Client.Execute(Request)
184+
.Expect(Response.Headers.count).ToBeGTE 5
185+
186+
Dim Header As Dictionary
187+
Dim NumCookies As Integer
188+
For Each Header In Response.Headers
189+
If Header("key") = "Set-Cookie" Then
190+
NumCookies = NumCookies + 1
191+
End If
192+
Next Header
193+
194+
.Expect(NumCookies).ToEqual 5
195+
End With
178196

179197
With Specs.It("should include cookies in response")
180198
Set Request = New RestRequest

specs/RestHelpersSpecs.bas

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ Public Function Specs() As SpecSuite
173173
End With
174174

175175
With Specs.It("should extract cookies from response headers")
176-
Set Cookies = RestHelpers.ExtractCookiesFromResponseHeaders(ResponseHeaders)
176+
Set Headers = RestHelpers.ExtractHeadersFromResponseHeaders(ResponseHeaders)
177+
Set Cookies = RestHelpers.ExtractCookiesFromHeaders(Headers)
177178
.Expect(Cookies.count).ToEqual 3
178179
.Expect(Cookies("unsigned-cookie")).ToEqual "simple-cookie"
179180
.Expect(Cookies("duplicate-cookie")).ToEqual "B"

src/RestHelpers.bas

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -419,8 +419,11 @@ Public Function CreateResponseFromHttp(ByRef Http As Object, Optional Format As
419419
Set CreateResponseFromHttp.Data = RestHelpers.ParseJSON(Http.ResponseText)
420420
End Select
421421

422+
' Extract headers
423+
Set CreateResponseFromHttp.Headers = ExtractHeadersFromResponseHeaders(Http.getAllResponseHeaders)
424+
422425
' Extract cookies
423-
Set CreateResponseFromHttp.Cookies = ExtractCookiesFromResponseHeaders(Http.getAllResponseHeaders)
426+
Set CreateResponseFromHttp.Cookies = ExtractCookiesFromHeaders(CreateResponseFromHttp.Headers)
424427
End Function
425428

426429
''
@@ -443,15 +446,13 @@ End Function
443446
' @return {Dictionary} Cookies
444447
' --------------------------------------------- '
445448

446-
Public Function ExtractCookiesFromResponseHeaders(ResponseHeaders As String) As Dictionary
449+
Public Function ExtractCookiesFromHeaders(Headers As Collection) As Dictionary
447450
Dim Cookies As New Dictionary
448451
Dim Cookie As String
449452
Dim Key As String
450453
Dim Value As String
451-
Dim Headers As Collection
452454
Dim Header As Dictionary
453455

454-
Set Headers = ExtractHeadersFromResponseHeaders(ResponseHeaders)
455456
For Each Header In Headers
456457
If Header("key") = "Set-Cookie" Then
457458
Cookie = Header("value")
@@ -470,7 +471,7 @@ Public Function ExtractCookiesFromResponseHeaders(ResponseHeaders As String) As
470471
End If
471472
Next Header
472473

473-
Set ExtractCookiesFromResponseHeaders = Cookies
474+
Set ExtractCookiesFromHeaders = Cookies
474475
End Function
475476

476477
''

src/RestResponse.cls

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ Public StatusDescription As String
2727
Public Content As String
2828
Public Data As Variant
2929
Public Body As Variant
30+
Public Headers As Collection
3031
Public Cookies As Dictionary
3132

3233
Private Sub Class_Initialize()
3334
Body = Array()
35+
Set Headers = New Collection
3436
Set Cookies = New Dictionary
3537
End Sub

0 commit comments

Comments
 (0)