#include "stdafx.h"
#include "CUserInfo.h"

#include "FileOperate.h"

CUserInfo::CUserInfo() : id(0), port(0)
{
}

CUserInfo::~CUserInfo()
{
}

bool CUserInfo::Init(std::string data)
{
	if (data.empty())
	{
		return false;
	}

	try
	{
		nlohmann::json j = nlohmann::json::parse(data.begin(), data.end());

		if (j["ret"].get<int>() == 1)
		{
			//
			this->access_token = j["data"]["access_token"].get<std::string>();
			this->affurl = j["data"]["affurl"].get<std::string>();
			this->swoftdownload = j["data"]["swoftdownload"].get<std::string>();
			this->clash_config = j["data"]["clash_config"].get<std::string>();
			//
			this->id = j["data"]["user"].at("id").get<int>();
			this->username = j["data"]["user"].at("account").get<std::string>();
			this->expiretime = j["data"]["user"].at("expired_at").get<std::string>();
			this->password = j["data"]["user"].at("passwd").get<std::string>();
			this->unusedTraffic = j["data"]["user"].at("unusedTraffic").get<std::string>();
			this->uuid = j["data"]["user"].at("uuid").get<std::string>();
			this->level = j["data"]["user"].at("level").get<std::string>();
			this->port = j["data"]["user"].at("port").get<int>();

			
			return true;

		}
		else
		{
			this->m_error_msg = S_CA2W(j["msg"].get<std::string>().c_str(),CP_UTF8).GetBuffer(0);

			return false;
		}


	}
	catch (...)
	{
		this->m_error_msg = L"½âÎöÊý¾Ý´íÎó";
		return false;
	}
    return false;
}

SStringA CUserInfo::GetLastErrorA()
{
	return S_CW2A(m_error_msg,CP_UTF8);
}

SStringW CUserInfo::GetLastErrorW()
{
	return m_error_msg.GetBuffer(0);
}


