168 lines
2.5 KiB
C
168 lines
2.5 KiB
C
|
|
|
||
|
|
#include "array.h"
|
||
|
|
|
||
|
|
#include "header.h"
|
||
|
|
|
||
|
|
class headerManager{
|
||
|
|
|
||
|
|
struct array * headers = new array();
|
||
|
|
|
||
|
|
parse( char * headerContent ) {
|
||
|
|
|
||
|
|
array * headerRows = headerContent->split("\n");
|
||
|
|
|
||
|
|
int headerCount = headerRows->length();
|
||
|
|
|
||
|
|
for (int i = 1; i < headerCount; ++i)
|
||
|
|
{
|
||
|
|
|
||
|
|
char * headerRow = headerRows->get( i );
|
||
|
|
|
||
|
|
array * headerRowParts = headerRow->split(":");
|
||
|
|
|
||
|
|
int headerRowPartsCount = headerRowParts->length();
|
||
|
|
|
||
|
|
|
||
|
|
if( headerRowPartsCount == 2 ) {
|
||
|
|
|
||
|
|
char * headerName = headerRowParts->get( 0 );
|
||
|
|
|
||
|
|
char * headerValue = headerRowParts->get( 1 );
|
||
|
|
|
||
|
|
//printf("%-20s %-30s \n", headerName, headerValue->removeWhitespace());
|
||
|
|
|
||
|
|
//printf("header value: %s\n\n", headerValue->removeWhitespace() );
|
||
|
|
|
||
|
|
this->add( headerName, headerValue->removeWhitespace() );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
printf("\n\n");
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void display() {
|
||
|
|
|
||
|
|
struct array * headerRows = this->headers;
|
||
|
|
|
||
|
|
int headerCount = headerRows->length();
|
||
|
|
|
||
|
|
for (int i = 0; i < headerCount; ++i)
|
||
|
|
{
|
||
|
|
struct header * headerInstance = headerRows->get( i );
|
||
|
|
|
||
|
|
printf("%-20s %-30s \n", headerInstance->name, headerInstance->value);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void add( char * name, char * value ) {
|
||
|
|
|
||
|
|
header * headerInstance = new header();
|
||
|
|
|
||
|
|
headerInstance->name = name;
|
||
|
|
|
||
|
|
headerInstance->value = value;
|
||
|
|
|
||
|
|
this->headers->add( headerInstance );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void set( char * name, char * value ) {
|
||
|
|
|
||
|
|
struct header * headerInstance = this->get( name );
|
||
|
|
|
||
|
|
if( headerInstance == NULL ) {
|
||
|
|
|
||
|
|
this->add( name, value );
|
||
|
|
|
||
|
|
} else {
|
||
|
|
|
||
|
|
int headerIndex = this->getHeaderIndex( name );
|
||
|
|
|
||
|
|
array * headers = this->headers;
|
||
|
|
|
||
|
|
|
||
|
|
header * headerInstance = headers->get( headerIndex );
|
||
|
|
|
||
|
|
headerInstance->value = value;
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
int getHeaderIndex( char * name ) {
|
||
|
|
|
||
|
|
array * headers = this->headers;
|
||
|
|
|
||
|
|
int count = headers->length();
|
||
|
|
|
||
|
|
for (int i = 0; i < count; ++i)
|
||
|
|
{
|
||
|
|
|
||
|
|
header * headerInstance = headers->get( i );
|
||
|
|
|
||
|
|
if( headerInstance->name == name ) {
|
||
|
|
|
||
|
|
return i;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return -1;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
char * getValue( char * name ) {
|
||
|
|
|
||
|
|
array * headers = this->headers;
|
||
|
|
|
||
|
|
int count = headers->length();
|
||
|
|
|
||
|
|
for (int i = 0; i < count; ++i)
|
||
|
|
{
|
||
|
|
|
||
|
|
header * headerInstance = headers->get( i );
|
||
|
|
|
||
|
|
if( headerInstance->name == name ) {
|
||
|
|
|
||
|
|
return headerInstance->value;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return NULL;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
header * get( char * name ) {
|
||
|
|
|
||
|
|
array * headers = this->headers;
|
||
|
|
|
||
|
|
int count = headers->length();
|
||
|
|
|
||
|
|
for (int i = 0; i < count; ++i)
|
||
|
|
{
|
||
|
|
|
||
|
|
header * headerInstance = headers->get( i );
|
||
|
|
|
||
|
|
if( headerInstance->name == name ) {
|
||
|
|
|
||
|
|
return headerInstance;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return NULL;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|