mirror of
https://github.com/YACReader/yacreader
synced 2025-07-15 19:44:32 -04:00
Merge
This commit is contained in:
261
YACReaderLibrary/server/lib/httpserver/httpcookie.cpp
Normal file
261
YACReaderLibrary/server/lib/httpserver/httpcookie.cpp
Normal file
@ -0,0 +1,261 @@
|
||||
/**
|
||||
@file
|
||||
@author Stefan Frings
|
||||
*/
|
||||
|
||||
#include "httpcookie.h"
|
||||
|
||||
HttpCookie::HttpCookie()
|
||||
{
|
||||
version=1;
|
||||
maxAge=0;
|
||||
secure=false;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
this->name=name;
|
||||
this->value=value;
|
||||
this->maxAge=maxAge;
|
||||
this->path=path;
|
||||
this->comment=comment;
|
||||
this->domain=domain;
|
||||
this->secure=secure;
|
||||
this->httpOnly=httpOnly;
|
||||
this->version=1;
|
||||
}
|
||||
|
||||
HttpCookie::HttpCookie(const QByteArray source)
|
||||
{
|
||||
version=1;
|
||||
maxAge=0;
|
||||
secure=false;
|
||||
QList<QByteArray> list=splitCSV(source);
|
||||
foreach(QByteArray part, list)
|
||||
{
|
||||
|
||||
// Split the part into name and value
|
||||
QByteArray name;
|
||||
QByteArray value;
|
||||
int posi=part.indexOf('=');
|
||||
if (posi)
|
||||
{
|
||||
name=part.left(posi).trimmed();
|
||||
value=part.mid(posi+1).trimmed();
|
||||
}
|
||||
else
|
||||
{
|
||||
name=part.trimmed();
|
||||
value="";
|
||||
}
|
||||
|
||||
// Set fields
|
||||
if (name=="Comment")
|
||||
{
|
||||
comment=value;
|
||||
}
|
||||
else if (name=="Domain")
|
||||
{
|
||||
domain=value;
|
||||
}
|
||||
else if (name=="Max-Age")
|
||||
{
|
||||
maxAge=value.toInt();
|
||||
}
|
||||
else if (name=="Path")
|
||||
{
|
||||
path=value;
|
||||
}
|
||||
else if (name=="Secure")
|
||||
{
|
||||
secure=true;
|
||||
}
|
||||
else if (name=="HttpOnly")
|
||||
{
|
||||
httpOnly=true;
|
||||
}
|
||||
else if (name=="Version")
|
||||
{
|
||||
version=value.toInt();
|
||||
}
|
||||
else {
|
||||
if (this->name.isEmpty())
|
||||
{
|
||||
this->name=name;
|
||||
this->value=value;
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning("HttpCookie: Ignoring unknown %s=%s",name.data(),value.data());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray HttpCookie::toByteArray() const
|
||||
{
|
||||
QByteArray buffer(name);
|
||||
buffer.append('=');
|
||||
buffer.append(value);
|
||||
if (!comment.isEmpty())
|
||||
{
|
||||
buffer.append("; Comment=");
|
||||
buffer.append(comment);
|
||||
}
|
||||
if (!domain.isEmpty())
|
||||
{
|
||||
buffer.append("; Domain=");
|
||||
buffer.append(domain);
|
||||
}
|
||||
if (maxAge!=0)
|
||||
{
|
||||
buffer.append("; Max-Age=");
|
||||
buffer.append(QByteArray::number(maxAge));
|
||||
}
|
||||
if (!path.isEmpty())
|
||||
{
|
||||
buffer.append("; Path=");
|
||||
buffer.append(path);
|
||||
}
|
||||
if (secure) {
|
||||
buffer.append("; Secure");
|
||||
}
|
||||
if (httpOnly) {
|
||||
buffer.append("; HttpOnly");
|
||||
}
|
||||
buffer.append("; Version=");
|
||||
buffer.append(QByteArray::number(version));
|
||||
return buffer;
|
||||
}
|
||||
|
||||
void HttpCookie::setName(const QByteArray name)
|
||||
{
|
||||
this->name=name;
|
||||
}
|
||||
|
||||
void HttpCookie::setValue(const QByteArray value)
|
||||
{
|
||||
this->value=value;
|
||||
}
|
||||
|
||||
void HttpCookie::setComment(const QByteArray comment)
|
||||
{
|
||||
this->comment=comment;
|
||||
}
|
||||
|
||||
void HttpCookie::setDomain(const QByteArray domain)
|
||||
{
|
||||
this->domain=domain;
|
||||
}
|
||||
|
||||
void HttpCookie::setMaxAge(const int maxAge)
|
||||
{
|
||||
this->maxAge=maxAge;
|
||||
}
|
||||
|
||||
void HttpCookie::setPath(const QByteArray path)
|
||||
{
|
||||
this->path=path;
|
||||
}
|
||||
|
||||
void HttpCookie::setSecure(const bool secure)
|
||||
{
|
||||
this->secure=secure;
|
||||
}
|
||||
|
||||
void HttpCookie::setHttpOnly(const bool httpOnly)
|
||||
{
|
||||
this->httpOnly=httpOnly;
|
||||
}
|
||||
|
||||
QByteArray HttpCookie::getName() const
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
QByteArray HttpCookie::getValue() const
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
QByteArray HttpCookie::getComment() const
|
||||
{
|
||||
return comment;
|
||||
}
|
||||
|
||||
QByteArray HttpCookie::getDomain() const
|
||||
{
|
||||
return domain;
|
||||
}
|
||||
|
||||
int HttpCookie::getMaxAge() const
|
||||
{
|
||||
return maxAge;
|
||||
}
|
||||
|
||||
QByteArray HttpCookie::getPath() const
|
||||
{
|
||||
return path;
|
||||
}
|
||||
|
||||
bool HttpCookie::getSecure() const
|
||||
{
|
||||
return secure;
|
||||
}
|
||||
|
||||
bool HttpCookie::getHttpOnly() const
|
||||
{
|
||||
return httpOnly;
|
||||
}
|
||||
|
||||
int HttpCookie::getVersion() const
|
||||
{
|
||||
return version;
|
||||
}
|
||||
|
||||
QList<QByteArray> HttpCookie::splitCSV(const QByteArray source)
|
||||
{
|
||||
bool inString=false;
|
||||
QList<QByteArray> list;
|
||||
QByteArray buffer;
|
||||
for (int i=0; i<source.size(); ++i)
|
||||
{
|
||||
char c=source.at(i);
|
||||
if (inString==false)
|
||||
{
|
||||
if (c=='\"')
|
||||
{
|
||||
inString=true;
|
||||
}
|
||||
else if (c==';')
|
||||
{
|
||||
QByteArray trimmed=buffer.trimmed();
|
||||
if (!trimmed.isEmpty())
|
||||
{
|
||||
list.append(trimmed);
|
||||
}
|
||||
buffer.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
buffer.append(c);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c=='\"')
|
||||
{
|
||||
inString=false;
|
||||
}
|
||||
else {
|
||||
buffer.append(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
QByteArray trimmed=buffer.trimmed();
|
||||
if (!trimmed.isEmpty())
|
||||
{
|
||||
list.append(trimmed);
|
||||
}
|
||||
return list;
|
||||
}
|
Reference in New Issue
Block a user