int32_t mod_chat_member_alpha::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    _request->set_url(c_robusto_host);
    _request->set_keep_alive();

    rapidjson::Document doc(rapidjson::Type::kObjectType);
    auto& a = doc.GetAllocator();

    doc.AddMember("method", "modChatMemberAlpha", a);
    doc.AddMember("reqId", get_req_id(), a);
    doc.AddMember("authToken", robusto_params_.robusto_token_, a);
    doc.AddMember("clientId", robusto_params_.robusto_client_id_, a);

    rapidjson::Value node_params(rapidjson::Type::kObjectType);
    node_params.AddMember("sn", aimid_, a);
    node_params.AddMember("memberSn", contact_, a);
    node_params.AddMember("role", role_, a);
    doc.AddMember("params", std::move(node_params), a);

    rapidjson::StringBuffer buffer;
    rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
    doc.Accept(writer);

    _request->push_post_parameter(buffer.GetString(), std::string());

    if (!params_.full_log_)
    {
        log_replace_functor f;
        f.add_json_marker("authToken");
        _request->set_replace_log_function(f);
    }

    return 0;
}
Example #2
0
int32_t get_stickers_index::init_request(std::shared_ptr<core::http_request_simple> _request)
{
	std::map<std::string, std::string> params;

	const time_t ts = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()) - params_.time_offset_;
	std::stringstream ss_ts;
	ss_ts << (int64_t) ts;
		
	const std::string host = "https://store.icq.com/openstore/contentlist";

	params["a"] = params_.a_token_;
	params["f"] = "json";
	params["k"] = params_.dev_id_;
    params["ts"] = ss_ts.str();
	params["r"] = core::tools::system::generate_guid();


	if (!md5_.empty())
	{
		params["md5"] = md5_;
	}

	params["client"] = "icq";

	const auto sha256 = escape_symbols(get_url_sign(host, params, params_, false));
	params["sig_sha256"] = sha256;

	std::stringstream ss_url;
	ss_url << host << params_map_2_string(params);

	_request->set_url(ss_url.str());
    _request->set_keep_alive();

	return 0;
}
Example #3
0
int32_t set_state::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::string state = "online";
    std::string invisible = "0";

    if (state_ == profile_state::offline)
        state = "offline";
    else if (state_ == profile_state::dnd)
        state = "occupied";
    else if (state_ == profile_state::away)
        state = "away";
    else if (state_ == profile_state::invisible)
        invisible = "1";

    std::stringstream ss_url;
    ss_url << c_wim_host << "presence/setState" <<
        "?f=json" <<
        "&aimsid=" << get_params().aimsid_ <<
        "&view=" << escape_symbols(state) <<
        "&r=" << core::tools::system::generate_guid() <<
        "&invisible=" << escape_symbols(invisible);

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    return 0;
}
Example #4
0
int32_t get_permit_deny::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "preference/getPermitDeny" <<
        "?f=json" <<
        "&aimsid=" << get_params().aimsid_;

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    return 0;
}
Example #5
0
int32_t search_contacts::init_request(std::shared_ptr<core::http_request_simple> _request)
{
	std::stringstream ss_url;

	do 
	{
		if (tools::is_email(filters_.get_keyword()))
		{
			search_type_ = search_type::memberdir_get;

			ss_url << c_wim_host << "memberDir/get" <<
				"?f=json" <<
				"&aimsid=" << get_params().aimsid_ <<
				"&infoLevel=full" <<
				"&locale=" << "ru-RU" <<
				"&t=" << escape_symbols(filters_.get_keyword());

			break;
		}
		else if (tools::is_phone(filters_.get_keyword()) || tools::is_uin(filters_.get_keyword()))
		{
			search_type_ = search_type::presence_get;

			ss_url << c_wim_host << "presence/get" <<
				"?f=json" <<
				"&aimsid=" << get_params().aimsid_ <<
				"&mdir=1" <<
				"&t=" << escape_symbols(filters_.get_keyword());

			break;
		}
		
		search_type_ = search_type::memberdir_search;

		ss_url << c_wim_host << "memberDir/search" <<
			"?f=json" <<
			"&aimsid=" << get_params().aimsid_ <<
			"&nToGet=" << filters_.get_count() <<
			"&nToSkip=" << filters_.get_skip_count() << 
			"&infoLevel=full" <<
			"&locale=" << "ru-RU" <<
			"&match=" << escape_symbols(create_match_string(filters_));
	}
	while (false);

	_request->set_url(ss_url.str());
    _request->set_keep_alive();

	return 0;
}
Example #6
0
int32_t validate_phone::init_request(std::shared_ptr<core::http_request_simple> _request)
{
	std::stringstream ss_url;
	ss_url << "https://www.icq.com:443/smsreg/requestPhoneValidation.php?" << 
		"&locale=" << locale_ <<
		"&msisdn=" << phone_ <<
		"&smsFormatType=human" <<
		"&k=" << params_.dev_id_ <<
        "&r=" <<  core::tools::system::generate_guid();

			
	_request->set_url(ss_url.str());
    _request->set_keep_alive();
	return 0;
}
Example #7
0
int32_t set_dlg_state::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    _request->set_url(c_robusto_host);
    _request->set_keep_alive();
    _request->set_priority(highest_priority);

    rapidjson::Document doc(rapidjson::Type::kObjectType);

    auto& a = doc.GetAllocator();

    std::string req_id = get_req_id();

    doc.AddMember("method", "setDlgStateWim", a);
    doc.AddMember("reqId", req_id, a);
    doc.AddMember("authToken", robusto_params_.robusto_token_, a);
    doc.AddMember("clientId", robusto_params_.robusto_client_id_, a);

    rapidjson::Value node_params(rapidjson::Type::kObjectType);

    node_params.AddMember("sn", params_.aimid_, a);
    if (!params_.last_delivered_wim_.empty())
        node_params.AddMember("lastDeliveredWim", params_.last_delivered_wim_, a);
    if (!params_.last_read_wim_.empty())
        node_params.AddMember("lastReadWim", params_.last_read_wim_, a);
    if (params_.invisible_)
        node_params.AddMember("invisible", params_.invisible_, a);
    if (params_.last_read_ > 0)
        node_params.AddMember("lastRead", params_.last_read_, a);
    if (params_.last_delivered_ > 0)
        node_params.AddMember("lastDelivered", params_.last_delivered_, a);

    doc.AddMember("params", std::move(node_params), a);

    rapidjson::StringBuffer buffer;
    rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
    doc.Accept(writer);

    _request->push_post_parameter(buffer.GetString(), std::string());

    if (!robusto_packet::params_.full_log_)
    {
        log_replace_functor f;
        f.add_json_marker("authToken");
        _request->set_replace_log_function(f);
    }

    return 0;
}
int32_t set_buddy_attribute::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "buddylist/setBuddyAttribute" <<
        "?f=json" <<
        "&aimsid=" << get_params().aimsid_ <<
        "&buddy=" << escape_symbols(aimid_) <<
        "&friendly=" << escape_symbols(friendly_) << 
        "&r=" << core::tools::system::generate_guid();

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    return 0;
}
Example #9
0
int32_t remove_members::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "mchat/DelMembers" <<
        "?f=json" <<
        "&chat_id=" <<  aimid_ <<
        "&aimsid=" << get_params().aimsid_ <<
        "&r=" << core::tools::system::generate_guid() <<
        "&members=" << m_chat_members_to_remove;

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    return 0;
}
Example #10
0
int32_t phone_login::init_request(std::shared_ptr<core::http_request_simple> _request)
{
	std::stringstream ss_url;
	ss_url << "https://www.icq.com:443/smsreg/loginWithPhoneNumber.php?" << 
		"&msisdn=" << info_->get_phone() <<
		"&trans_id=" << info_->get_trans_id() <<
		"&k=" << params_.dev_id_ <<
        "&r=" << core::tools::system::generate_guid() << 
		"&f=json" <<
		"&sms_code=" << info_->get_sms_code() <<
		"&create_account=1";
			
	_request->set_url(ss_url.str());
    _request->set_keep_alive();
	return 0;
}
Example #11
0
int32_t send_file::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    _request->set_need_log(false);
    _request->set_keep_alive();

    std::stringstream ss_id;
    ss_id << "Session-ID: " << chunk_.session_id_;
    _request->set_custom_header_param(ss_id.str());

    std::stringstream ss_disp;
    ss_disp << "Content-Disposition: attachment; filename=\"" << chunk_.file_name_ << "\"";
    _request->set_custom_header_param(ss_disp.str());

    _request->set_custom_header_param("Content-Type: application/octet-stream");

    std::stringstream ss_range;
    ss_range << "bytes " << chunk_.size_already_sent_ << "-" << (chunk_.size_already_sent_ + chunk_.current_chunk_size_ - 1) << "/" <<  chunk_.full_data_size_;

    std::stringstream ss_content_range;
    ss_content_range << "Content-Range: " << ss_range.str();
    _request->set_custom_header_param(ss_content_range.str());

    _request->set_post_data(chunk_.data_, (uint32_t)chunk_.current_chunk_size_, false);

    std::stringstream ss_url;
    ss_url << "https://" << host_ << url_;

    std::map<std::string, std::string> params;

    const time_t ts = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()) - params_.time_offset_;

    params["a"] = params_.a_token_;
    params["f"] = "json";
    params["k"] = params_.dev_id_;
    params["ts"] = tools::from_int64(ts);
    params["r"] = core::tools::system::generate_guid();

    const auto sha256 = escape_symbols(get_url_sign(ss_url.str(), params, params_, true));
    params["sig_sha256"] = sha256;

    std::stringstream ss_url_signed;
    ss_url_signed << ss_url.str() << "?" << format_get_params(params);

    _request->set_url(ss_url_signed.str());

    return 0;
}
Example #12
0
int32_t add_chat::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "mchat/AddChat" <<
        "?f=json" <<
        "&chat_name="<< escape_symbols(m_chat_name) <<
        "&aimsid=" << get_params().aimsid_ <<
        "&r=" <<  core::tools::system::generate_guid() <<
        "&members=" << (*m_chat_members.begin());

    std::for_each(++m_chat_members.begin(), m_chat_members.end(), [&ss_url](const std::string item){ ss_url << ";" << item; });
    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    return 0;
}
Example #13
0
int32_t fetch::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << core::tools::trim_right<std::string>(fetch_url_, "/");
    if (ss_url.str().rfind('?') == std::string::npos)
        ss_url << '?';
    else
        ss_url << '&';

    static int32_t request_id = 0;
    ss_url << "f=json" << "&r=" << ++request_id << "&timeout=" << timeout_ << "&peek=" << "0";

    _request->set_url(ss_url.str());
    _request->set_timeout((uint32_t)timeout_ + 5000);
    _request->set_keep_alive();

    return 0;
}
Example #14
0
int32_t request_avatar::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;
    ss_url << "https://api.icq.net/expressions/get?" <<
        "t=" << contact_ <<
        "&f=native" <<
        "&r=" << core::tools::system::generate_guid() <<
        "&type=" << avatar_type_;

    if (write_time_ != 0)
        _request->set_modified_time_condition(write_time_ - params_.time_offset_);

    _request->set_need_log(params_.full_log_);
    _request->set_url(ss_url.str());
    _request->set_keep_alive();
    _request->set_priority(highest_priority + increase_priority);

    return 0;
}
Example #15
0
int32_t get_permit_deny::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "preference/getPermitDeny" <<
        "?f=json" <<
        "&aimsid=" << escape_symbols(get_params().aimsid_);

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    if (!params_.full_log_)
    {
        log_replace_functor f;
        f.add_marker("aimsid");
        _request->set_replace_log_function(f);
    }

    return 0;
}
Example #16
0
int32_t set_avatar::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "expressions/upload" <<
        "?f=json" <<
        "&aimsid=" << get_params().aimsid_ <<
        "&r=" <<  core::tools::system::generate_guid() <<
        "&type=largeBuddyIcon";

    if (!aimid_.empty())
        ss_url << "&t=" << aimid_;
    
    auto size = image_.available();
    _request->set_post_data(image_.read_available(), size, true);
    image_.reset_out();
    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    return 0;
}
Example #17
0
int32_t send_message_typing::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::string status = "none";
    switch (status_)
    {
        case core::typing_status::typing:
            status = "typing";
            break;
        case core::typing_status::typed:
            status = "typed";
            break;
        case core::typing_status::looking:
            status = "looking";
            break;
        default:
            break;
    }

    std::stringstream ss_url;
    ss_url << c_wim_host << "im/setTyping" <<
        "?f=json" <<
        "&aimsid=" << escape_symbols(get_params().aimsid_) <<
        "&t=" << escape_symbols(contact_) <<
        "&r=" <<  core::tools::system::generate_guid() <<
        "&typingStatus=" << status;

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    if (!params_.full_log_)
    {
        log_replace_functor f;
        f.add_marker("aimsid");
        _request->set_replace_log_function(f);
    }

    return 0;
}
Example #18
0
int32_t mute_buddy::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << c_wim_host << "buddylist/Mute" <<
        "?f=json" <<
        "&aimsid=" << escape_symbols(get_params().aimsid_) <<
        "&buddy=" << escape_symbols(aimid_) <<
        "&r=" << core::tools::system::generate_guid() <<
        "&eternal=" << (mute_ ? '1' : '0');

    _request->set_url(ss_url.str());
    _request->set_keep_alive();

    if (!params_.full_log_)
    {
        log_replace_functor f;
        f.add_marker("aimsid");
        _request->set_replace_log_function(f);
    }

    return 0;
}
int32_t remove_stickers_pack_packet::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::map<std::string, std::string> params;

    const time_t ts = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now()) - params_.time_offset_;

    const std::string host = "https://store.icq.com";

    params["a"] = escape_symbols(params_.a_token_);
    params["f"] = "json";
    params["k"] = params_.dev_id_;
    params["platform"] = utils::get_protocol_platform_string();

    params["product_id"] = std::to_string(pack_id_);

    params["ts"] = std::to_string((int64_t) ts);
    params["r"] = core::tools::system::generate_guid();

    params["client"] = (build::is_icq() ? "icq" : "agent");

    params["lang"] = g_core->get_locale();

    std::stringstream ss_url;
    ss_url << host << "/store/deletepurchase";

    const auto sha256 = escape_symbols(get_url_sign(ss_url.str(), params, params_, false));
    params["sig_sha256"] = sha256;

    std::stringstream ss_url_signed;
    ss_url_signed << ss_url.str() << '?' << format_get_params(params);

    _request->set_url(ss_url_signed.str());
    _request->set_keep_alive();
    _request->set_priority(high_priority);

    return 0;
}
Example #20
0
int32_t fetch::init_request(std::shared_ptr<core::http_request_simple> _request)
{
    std::stringstream ss_url;

    ss_url << core::tools::trim_right<std::string>(fetch_url_, "/");
    if (ss_url.str().rfind('?') == std::string::npos)
        ss_url << '?';
    else
        ss_url << '&';

    static int32_t request_id = 0;
    ss_url << "f=json" << "&r=" << ++request_id << "&timeout=" << timeout_ << "&peek=" << "0";

    _request->set_url(ss_url.str());
    _request->set_timeout((uint32_t)timeout_ + 5000);
    _request->set_keep_alive();

    if (!params_.full_log_)
    {
        _request->set_replace_log_function(std::bind(wim_packet::replace_log_messages, std::placeholders::_1));
    }

    return 0;
}