Files
c-prime/application/source/headers.c
2025-11-17 10:28:09 +01:00

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;
}
}