Skip to content

Instantly share code, notes, and snippets.

@nathan130200
Created May 22, 2024 21:38
Show Gist options
  • Save nathan130200/9f3c3773552d27b507c35849120661c6 to your computer and use it in GitHub Desktop.
Save nathan130200/9f3c3773552d27b507c35849120661c6 to your computer and use it in GitHub Desktop.
JID parser & management.
#include "jid.h"
#include "xmpp.h"
#include <sstream>
using namespace std;
Jid::Jid()
{
}
Jid::Jid(const std::string& str)
{
size_t at = str.find('@');
size_t slash = str.find('/');
if (at == string::npos && slash == string::npos)
_domain = str;
else
{
if (at != string::npos)
_local = str.substr(0, at);
if (slash == string::npos)
_domain = str.substr(at + 1);
else
{
_domain = str.substr(at + 1, (slash - 1) - at);
_resource = str.substr(slash + 1);
}
}
}
Jid::Jid(const string local, const string domain, const string resource) :
_local(local),
_domain(domain),
_resource(resource)
{
}
Jid::Jid(const char* local, const char* domain, const char* resource) :
_local(local),
_domain(domain),
_resource(resource)
{
}
const string Jid::toString()
{
stringstream out;
if (!_local.empty())
out << _local << "@";
out << _domain;
if (!_resource.empty())
out << "/" << _resource;
return out.str();
}
const string Jid::local() { return _local; }
const string Jid::domain() { return _domain; }
const string Jid::resource() { return _resource; }
void Jid::setLocal(const string local) { _local = local; }
void Jid::setDomain(const string domain) { _domain = domain; }
void Jid::setResource(const string resource) { _resource = resource; }
void Jid::setLocal(const char* local) { _local = local; }
void Jid::setDomain(const char* domain) { _domain = domain; }
void Jid::setResource(const char* resource) { _resource = resource; }
#pragma once
#include <string>
class Jid
{
private:
std::string _local;
std::string _domain;
std::string _resource;
public:
Jid();
Jid(const std::string& str);
Jid(const std::string local, const std::string domain, const std::string resource);
Jid(const char* local, const char* domain, const char* resource);
~Jid() = default;
const std::string local();
const std::string domain();
const std::string resource();
void setLocal(const std::string value);
void setDomain(const std::string value);
void setResource(const std::string value);
void setLocal(const char* value);
void setDomain(const char* value);
void setResource(const char* value);
const std::string toString();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment