00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __LIBCURLRESOLVER_H__
00030 #define __LIBCURLRESOLVER_H__
00031
00032 #include "H3DApi.h"
00033
00034 #ifdef HAVE_LIBCURL
00035 #include <string>
00036 #include <iostream>
00037 #include <fstream>
00038 #include <list>
00039 #include <curl/curl.h>
00040 #include "ResourceResolver.h"
00041
00042 using namespace std;
00043
00044 #ifdef _MSC_VER
00045 #pragma comment( lib, "libcurl.lib" )
00046 #endif
00047
00048 namespace H3D {
00049
00052 class H3DAPI_API LibCurlResolver : public ResourceResolver {
00053 public:
00054
00056 LibCurlResolver() {}
00057
00060 virtual ~LibCurlResolver() {
00061 for( list< string >::iterator i = temp_files.begin();
00062 i != temp_files.end(); i++ ) {
00063 remove( (*i).c_str() );
00064 }
00065 }
00066
00070 virtual string resolveURLAsTmpFile( const string &url );
00071
00072 protected:
00073 static size_t writeToStream( void *ptr, size_t size,
00074 size_t nmemb, void *stream) {
00075 ostream *os = static_cast< ostream * >( stream );
00076 os->write( (char *)ptr, size * nmemb );
00077 return size * nmemb;
00078 }
00079
00080 list< string > temp_files;
00081 };
00082 }
00083
00084 #endif
00085 #endif // HAVE_LIBCURL