153 строки
2.4 KiB
C++
153 строки
2.4 KiB
C++
//
|
|
// Http.h
|
|
// Player Javascript
|
|
//
|
|
// Created by Anthony Liot on 23/11/12.
|
|
//
|
|
|
|
#ifndef __HTTP_H__
|
|
#define __HTTP_H__
|
|
|
|
#include <stdarg.h>
|
|
#include <string>
|
|
|
|
|
|
/*
|
|
*/
|
|
class http {
|
|
|
|
public:
|
|
|
|
enum Status {
|
|
ST_PENDING = 0,
|
|
ST_FAILED,
|
|
ST_OK
|
|
};
|
|
|
|
enum RequestType {
|
|
REQUEST_GET = 0,
|
|
REQUEST_POST ,
|
|
};
|
|
|
|
enum AssyncMode {
|
|
ASSYNC_THREAD
|
|
};
|
|
|
|
// enregistrement sur unigine
|
|
static void RegisterAsExtension(bool regis);
|
|
|
|
// Callback
|
|
static void onLoaded(void* parent, const char * file);
|
|
static void onError(void* parent, int statuserror);
|
|
static void onProgress(void* parent, int progress);
|
|
|
|
// Constructeur
|
|
http(const char* hostname, int requestType, const char* targetFileName = "");
|
|
|
|
//Destructeur
|
|
virtual ~http();
|
|
|
|
/**
|
|
* Effectue la requete
|
|
*/
|
|
void runRequest(const char* page, int assync);
|
|
|
|
/**
|
|
* Accede a la reponse
|
|
*/
|
|
const char* getContent();
|
|
|
|
/**
|
|
* Accede a l'erreur
|
|
*/
|
|
const char* getError();
|
|
|
|
/**
|
|
* Accede au status
|
|
*/
|
|
int getStatus();
|
|
|
|
/**
|
|
* Accede a la progression
|
|
*/
|
|
float getProgress();
|
|
|
|
/**
|
|
* Get Id of http Class
|
|
*/
|
|
int getId();
|
|
|
|
/**
|
|
*
|
|
*/
|
|
void addValue(const char* key, const char* value);
|
|
|
|
/**
|
|
* Callback
|
|
*/
|
|
void onProgress(int progress);
|
|
void onLoaded(const char* file);
|
|
void onError(int error);
|
|
|
|
// Static parameter
|
|
static int uid;
|
|
static std::string cross_domain ;
|
|
|
|
private:
|
|
|
|
// Id of request
|
|
int _uid;
|
|
|
|
// nom de l'hote
|
|
std::string _hostname;
|
|
|
|
// nom de la page
|
|
std::string _page;
|
|
|
|
// target filename
|
|
std::string _targetFileName;
|
|
|
|
// param
|
|
std::string _param;
|
|
|
|
// resultat
|
|
std::string _content;
|
|
|
|
// probleme
|
|
std::string _error;
|
|
|
|
// request type
|
|
RequestType _request;
|
|
|
|
// status
|
|
int _status;
|
|
|
|
// progress value
|
|
int _progressValue;
|
|
|
|
// mode assyncrone courant
|
|
AssyncMode _assync;
|
|
|
|
};
|
|
|
|
//this is safe and convenient but not exactly efficient
|
|
inline std::string format(const char* fmt, ...){
|
|
int size = 512;
|
|
char* buffer = 0;
|
|
buffer = new char[size];
|
|
va_list vl;
|
|
va_start(vl,fmt);
|
|
int nsize = vsnprintf(buffer,size,fmt,vl);
|
|
if(size<=nsize){//fail delete buffer and try again
|
|
delete buffer; buffer = 0;
|
|
buffer = new char[nsize+1];//+1 for /0
|
|
nsize = vsnprintf(buffer,size,fmt,vl);
|
|
}
|
|
std::string ret(buffer);
|
|
va_end(vl);
|
|
delete buffer;
|
|
return ret;
|
|
}
|
|
|
|
#endif /* __HTTP_H__ */
|