-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathHeaders.rbbas
139 lines (125 loc) · 3.07 KB
/
Headers.rbbas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#tag Class
Protected Class Headers
Inherits InternetHeaders
#tag Method, Flags = &h1001
Protected Sub Constructor(Data As String)
// Calling the overridden superclass constructor.
Super.Constructor
Dim lines() As String = data.Split(CRLF)
Dim lcount As Integer = UBound(lines)
For i As Integer = 0 To lcount
Dim line As String = lines(i)
If Instr(line, ": ") <= 1 Or line.Trim = "" Then Continue
Dim n, v As String
n = NthField(line, ": ", 1)
v = Right(line, line.Len - (n.Len + 2)).Trim
Select Case n
Case "Set-Cookie"
Cookies.Append(New Cookie(v))
Case "Cookie"
Dim cc() As Cookie = Cookie.ParseCookies(v)
For Each ci As Cookie In cc
Cookies.Append(ci)
Next
Else
Me.AppendHeader(n, v)
End Select
Next
End Sub
#tag EndMethod
#tag Method, Flags = &h0
Function Cookie(Index As Integer) As Cookie
Return Cookies(Index)
End Function
#tag EndMethod
#tag Method, Flags = &h0
Sub Cookie(Index As Integer, Assigns NewCookie As Cookie)
#pragma BreakOnExceptions Off
If NewCookie = Nil Then
Cookies.Remove(Index)
Else
Cookies(Index) = NewCookie
End If
Exception OutOfBoundsException
If NewCookie <> Nil Then Cookies.Append(NewCookie)
End Sub
#tag EndMethod
#tag Method, Flags = &h0
Function CookieCount() As Integer
Return UBound(Cookies) + 1
End Function
#tag EndMethod
#tag Method, Flags = &h0
Sub DeleteAllHeaders()
Super.DeleteAllHeaders
ReDim Cookies(-1)
End Sub
#tag EndMethod
#tag Method, Flags = &h0
Sub Operator_Convert(NewHeaders As String)
Me.Constructor(NewHeaders)
End Sub
#tag EndMethod
#tag Method, Flags = &h0
Sub SetCookie(NewCookie As HTTP.Cookie)
Cookies.Append(NewCookie)
End Sub
#tag EndMethod
#tag Method, Flags = &h0
Function Source(SetCookies As Boolean = False) As String
Dim data As String = Super.Source
For Each c As Cookie In Me.Cookies
If SetCookies Then
data = data + CRLF + "Set-Cookie: " + c.ToString(SetCookies)
Else
data = data + CRLF + "Cookie: " + c.ToString(SetCookies)
End If
Next
Return data
End Function
#tag EndMethod
#tag Property, Flags = &h0
Cookies() As Cookie
#tag EndProperty
#tag ViewBehavior
#tag ViewProperty
Name="Index"
Visible=true
Group="ID"
InitialValue="-2147483648"
Type="Integer"
InheritedFrom="Object"
#tag EndViewProperty
#tag ViewProperty
Name="Left"
Visible=true
Group="Position"
InitialValue="0"
Type="Integer"
InheritedFrom="Object"
#tag EndViewProperty
#tag ViewProperty
Name="Name"
Visible=true
Group="ID"
Type="String"
InheritedFrom="Object"
#tag EndViewProperty
#tag ViewProperty
Name="Super"
Visible=true
Group="ID"
Type="String"
InheritedFrom="Object"
#tag EndViewProperty
#tag ViewProperty
Name="Top"
Visible=true
Group="Position"
InitialValue="0"
Type="Integer"
InheritedFrom="Object"
#tag EndViewProperty
#tag EndViewBehavior
End Class
#tag EndClass