SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
httpcookie.cpp
Go to the documentation of this file.
1 
6 #include "httpcookie.h"
7 
8 using namespace qtwebapp;
9 
11 {
12  version=1;
13  maxAge=0;
14  secure=false;
15  httpOnly=false;
16 }
17 
18 HttpCookie::HttpCookie(const QByteArray name, const QByteArray value, const int maxAge, const QByteArray path, const QByteArray comment, const QByteArray domain, const bool secure, const bool httpOnly)
19 {
20  this->name=name;
21  this->value=value;
22  this->maxAge=maxAge;
23  this->path=path;
24  this->comment=comment;
25  this->domain=domain;
26  this->secure=secure;
27  this->httpOnly=httpOnly;
28  this->version=1;
29 }
30 
31 HttpCookie::HttpCookie(const QByteArray source)
32 {
33  version=1;
34  maxAge=0;
35  secure=false;
36  QList<QByteArray> list=splitCSV(source);
37  foreach(QByteArray part, list)
38  {
39 
40  // Split the part into name and value
41  QByteArray name;
42  QByteArray value;
43  int posi=part.indexOf('=');
44  if (posi)
45  {
46  name=part.left(posi).trimmed();
47  value=part.mid(posi+1).trimmed();
48  }
49  else
50  {
51  name=part.trimmed();
52  value="";
53  }
54 
55  // Set fields
56  if (name=="Comment")
57  {
58  comment=value;
59  }
60  else if (name=="Domain")
61  {
62  domain=value;
63  }
64  else if (name=="Max-Age")
65  {
66  maxAge=value.toInt();
67  }
68  else if (name=="Path")
69  {
70  path=value;
71  }
72  else if (name=="Secure")
73  {
74  secure=true;
75  }
76  else if (name=="HttpOnly")
77  {
78  httpOnly=true;
79  }
80  else if (name=="Version")
81  {
82  version=value.toInt();
83  }
84  else {
85  if (this->name.isEmpty())
86  {
87  this->name=name;
88  this->value=value;
89  }
90  else
91  {
92  qWarning("HttpCookie::HttpCookie: Ignoring unknown %s=%s",name.data(),value.data());
93  }
94  }
95  }
96 }
97 
98 QByteArray HttpCookie::toByteArray() const
99 {
100  QByteArray buffer(name);
101  buffer.append('=');
102  buffer.append(value);
103  if (!comment.isEmpty())
104  {
105  buffer.append("; Comment=");
106  buffer.append(comment);
107  }
108  if (!domain.isEmpty())
109  {
110  buffer.append("; Domain=");
111  buffer.append(domain);
112  }
113  if (maxAge!=0)
114  {
115  buffer.append("; Max-Age=");
116  buffer.append(QByteArray::number(maxAge));
117  }
118  if (!path.isEmpty())
119  {
120  buffer.append("; Path=");
121  buffer.append(path);
122  }
123  if (secure) {
124  buffer.append("; Secure");
125  }
126  if (httpOnly) {
127  buffer.append("; HttpOnly");
128  }
129  buffer.append("; Version=");
130  buffer.append(QByteArray::number(version));
131  return buffer;
132 }
133 
134 void HttpCookie::setName(const QByteArray name)
135 {
136  this->name=name;
137 }
138 
139 void HttpCookie::setValue(const QByteArray value)
140 {
141  this->value=value;
142 }
143 
144 void HttpCookie::setComment(const QByteArray comment)
145 {
146  this->comment=comment;
147 }
148 
149 void HttpCookie::setDomain(const QByteArray domain)
150 {
151  this->domain=domain;
152 }
153 
155 {
156  this->maxAge=maxAge;
157 }
158 
159 void HttpCookie::setPath(const QByteArray path)
160 {
161  this->path=path;
162 }
163 
165 {
166  this->secure=secure;
167 }
168 
170 {
171  this->httpOnly=httpOnly;
172 }
173 
174 QByteArray HttpCookie::getName() const
175 {
176  return name;
177 }
178 
179 QByteArray HttpCookie::getValue() const
180 {
181  return value;
182 }
183 
184 QByteArray HttpCookie::getComment() const
185 {
186  return comment;
187 }
188 
189 QByteArray HttpCookie::getDomain() const
190 {
191  return domain;
192 }
193 
195 {
196  return maxAge;
197 }
198 
199 QByteArray HttpCookie::getPath() const
200 {
201  return path;
202 }
203 
205 {
206  return secure;
207 }
208 
210 {
211  return httpOnly;
212 }
213 
215 {
216  return version;
217 }
218 
219 QList<QByteArray> HttpCookie::splitCSV(const QByteArray source)
220 {
221  bool inString=false;
222  QList<QByteArray> list;
223  QByteArray buffer;
224  for (int i=0; i<source.size(); ++i)
225  {
226  char c=source.at(i);
227  if (inString==false)
228  {
229  if (c=='\"')
230  {
231  inString=true;
232  }
233  else if (c==';')
234  {
235  QByteArray trimmed=buffer.trimmed();
236  if (!trimmed.isEmpty())
237  {
238  list.append(trimmed);
239  }
240  buffer.clear();
241  }
242  else
243  {
244  buffer.append(c);
245  }
246  }
247  else
248  {
249  if (c=='\"')
250  {
251  inString=false;
252  }
253  else {
254  buffer.append(c);
255  }
256  }
257  }
258  QByteArray trimmed=buffer.trimmed();
259  if (!trimmed.isEmpty())
260  {
261  list.append(trimmed);
262  }
263  return list;
264 }
void setDomain(const QByteArray domain)
Definition: httpcookie.cpp:149
QByteArray toByteArray() const
Definition: httpcookie.cpp:98
void setName(const QByteArray name)
Definition: httpcookie.cpp:134
void setPath(const QByteArray path)
Definition: httpcookie.cpp:159
QByteArray getComment() const
Definition: httpcookie.cpp:184
void setComment(const QByteArray comment)
Definition: httpcookie.cpp:144
int32_t i
Definition: decimators.h:244
void setSecure(const bool secure)
Definition: httpcookie.cpp:164
QByteArray getName() const
Definition: httpcookie.cpp:174
void setMaxAge(const int maxAge)
Definition: httpcookie.cpp:154
QByteArray getDomain() const
Definition: httpcookie.cpp:189
int getMaxAge() const
Definition: httpcookie.cpp:194
static QList< QByteArray > splitCSV(const QByteArray source)
Definition: httpcookie.cpp:219
bool getHttpOnly() const
Definition: httpcookie.cpp:209
QByteArray comment
Definition: httpcookie.h:113
QByteArray getValue() const
Definition: httpcookie.cpp:179
void setValue(const QByteArray value)
Definition: httpcookie.cpp:139
int getVersion() const
Definition: httpcookie.cpp:214
QByteArray getPath() const
Definition: httpcookie.cpp:199
bool getSecure() const
Definition: httpcookie.cpp:204
void setHttpOnly(const bool httpOnly)
Definition: httpcookie.cpp:169