/** GSWRecording.m - GSWeb: Class GSWRecording Copyright (C) 2003 Free Software Foundation, Inc. Written by: Manuel Guesdon Date: Aug 2003 $Revision$ $Date$ $Id$ This file is part of the GNUstep Web Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. **/ #include "config.h" RCS_ID("$Id$") #include "GSWeb.h" #include "GSWRecording.h" //==================================================================== @implementation GSWRecording //-------------------------------------------------------------------- -(void)_setRecordingPath:(NSString*)recordingPath { LOGObjectFnStart(); NSDebugMLog(@"recordingPath=%@",recordingPath); if (recordingPath) { int i=0; NSString* basePath=nil; NSFileManager* fileManager=[NSFileManager defaultManager]; // path cound be application recording path (ending by .rec) or general path if ([[recordingPath pathExtension]isEqualToString:@"rec"]) basePath=[recordingPath stringByDeletingPathExtension]; // application path else { // Build application path BOOL isDirectory=NO; if ([fileManager fileExistsAtPath:recordingPath isDirectory:&isDirectory] && isDirectory) { // /recordingPath/AppName/ basePath=[recordingPath stringByAppendingPathComponent:[[GSWApplication application] name]]; } else { basePath=recordingPath; }; }; NSDebugMLog(@"basePath=%@",basePath); recordingPath=[basePath stringByAppendingPathExtension:@"rec"]; NSDebugMLog(@"recordingPath=%@",recordingPath); i=0; while([fileManager fileExistsAtPath:recordingPath]) recordingPath=[[NSString stringWithFormat:@"%@-%d",basePath,i++]stringByAppendingPathExtension:@"rec"]; ASSIGN(_recordingPath,recordingPath); NSDebugMLog(@"_recordingPath=%@",_recordingPath); if (![fileManager createDirectoryAtPath:_recordingPath attributes:nil]) { ExceptionRaise(@"GSWRecording: create directory '@'",_recordingPath); }; }; LOGObjectFnStop(); }; //-------------------------------------------------------------------- -(id)init { if ((self=[super init])) { NSString* recordingPath=nil; NSNotificationCenter* defaultCenter=nil; recordingPath=[[[GSWApplication application] class]recordingPath]; [self _setRecordingPath:recordingPath]; // Register observers defaultCenter=[NSNotificationCenter defaultCenter]; [defaultCenter addObserver:self selector:@selector(_applicationWillDispatchRequest:) name:@"ApplicationWillDispatchRequestNotification" object:nil]; [defaultCenter addObserver:self selector:@selector(_applicationDidDispatchRequest:) name:@"ApplicationDidDispatchRequestNotification" object:nil]; //TODO wildcards = "/##*##/##*##/" with Application name() + ".gswa/##*##/" }; return self; }; //-------------------------------------------------------------------- -(void)dealloc { DESTROY(_request); DESTROY(_recordingPath); DESTROY(_wildcards); [super dealloc]; }; //-------------------------------------------------------------------- -(NSString*)_headersStringForMessage:(GSWMessage*)message { NSMutableString* headersString=[NSMutableString string]; NSArray* headerKeys=nil; int i=0; int count=0; LOGObjectFnStart(); headerKeys=[message headerKeys]; count=[headerKeys count]; for(i=0;i