#ifndef _JIDU_CLIENT_H_
#define _JIDU_CLIENT_H_

#include "otx/OTXBase.hpp"
#include "HttpClient.h"
#include <vector>
#include <string>
#include <map>
#include "jidu_macro.h"
#include "cjson.h"

using namespace std;


class JiduClient:public HttpClient
	{
	public:
		
		~JiduClient();

	public:
		string deviceSn;
		string eolHost;
		string pkiHost;
		string cfgHost;
		string diagHost;
		string vin;

		int callServer(int iType, string inParams, char* outBuffer, unsigned int outBufferSize);
		static JiduClient* getInstance() {
			if (instance == NULL) {
				instance = new JiduClient();
			}

			return instance;
		}

		void init();

	private:
		static JiduClient* instance;
		string certDir;
		string certPem;
		string keyPem;
		JiduClient();
	private:
		void gen_pem(string p12Path, string passwd, string& pemCertBuffer, string& pemKeyBuffer);
		int parsed(string& response);
		void add_powerType(string& inParams);
		void add_carType(string& inParams);
		int callServer_preHandler(int iType, string& inParams);
		int callServer_affterHandler(int iType, string inParams, string& response);
		bool getAccessToken(string& token);
		void desensitize(cJSON* obj);

	public:
		bool loadEnvirment();
		bool loadParam();
};

#endif
