mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 08:08:42 +00:00
.. Makes it easier to identify code that has been snaffled in from other repositories and check licensing .. The httpserver is now no longer optional, since it is delivered as contributed source.
200 lines
4.5 KiB
C++
200 lines
4.5 KiB
C++
/**
|
|
@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) {
|
|
this->name=name;
|
|
this->value=value;
|
|
this->maxAge=maxAge;
|
|
this->path=path;
|
|
this->comment=comment;
|
|
this->domain=domain;
|
|
this->secure=secure;
|
|
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=="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");
|
|
}
|
|
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;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
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;
|
|
}
|