/* ============================================================================
* Douglas Thrift's Web Contact License
*
* Copyright (C) 2002, Douglas Thrift. All Rights Reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The end-user documentation included with the redistribution, if any, must
* include the following acknowledgment:
*
* "This product includes software developed by Douglas Thrift
* (http://computers.douglasthrift.net/webcontact.html)."
*
* Alternately, this acknowledgment may appear in the software itself, if
* and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Douglas Thrift" and "Douglas Thrift's Web Contact" must not be
* used to endorse or promote products derived from this software without
* specific prior written permission. For written permission, please visit
* http://www.douglasthrift.net/contact.html for contact information.
*
* 5. Products derived from this software may not be called "Douglas Thrift's
* Web Contact", nor may "Douglas Thrift's Web Contact" appear in their
* name, without prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ============================================================================
*/
// Windows XP FAQ Poll
//
// Douglas Thrift
//
// Account.cpp
#include "Account.h"
istream& operator>>(istream& is, Account& account)
{
string line;
getline(is, line);
if (line == "")
{
do
{
getline(is, line);
if (line.find(" ") == 0)
{
unsigned start = line.find("") + 6;
unsigned finish = line.find("", start);
string host = line.substr(start, finish - start);
entities(host, "<", '<');
entities(host, ">", '>');
entities(host, "&", '&');
account.setHost(host);
}
else if (line.find(" ") == 0)
{
unsigned start = line.find("") + 6;
unsigned finish = line.find("", start);
string port = line.substr(start, finish - start);
account.setPort(strtoul(port.c_str(), 0, 0));
}
else if (line.find(" ") == 0)
{
unsigned start = line.find("") + 7;
unsigned finish = line.find("", start);
string login = line.substr(start, finish - start);
entities(login, "<", '<');
entities(login, ">", '>');
entities(login, "&", '&');
account.setLogin(login);
}
else if (line.find(" ") == 0)
{
unsigned start = line.find("") + 6;
unsigned finish = line.find("", start);
string name = line.substr(start, finish - start);
entities(name, "<", '<');
entities(name, ">", '>');
entities(name, "&", '&');
account.setName(name);
}
else if (line.find(" ") == 0)
{
unsigned start = line.find("") + 7;
unsigned finish = line.find("", start);
string email = line.substr(start, finish - start);
entities(email, "<", '<');
entities(email, ">", '>');
entities(email, "&", '&');
account.setEmail(email);
}
else if (line.find(" ") == 0)
{
unsigned start = line.find("") + 10;
unsigned finish = line.find("", start);
string password = line.substr(start, finish - start);
entities(password, "<", '<');
entities(password, ">", '>');
entities(password, "&", '&');
account.setPassword(password);
}
else if (line.find(" ") == 0)
{
unsigned start = line.find("") + 9;
unsigned finish = line.find("", start);
string mailbox = line.substr(start, finish - start);
entities(mailbox, "<", '<');
entities(mailbox, ">", '>');
entities(mailbox, "&", '&');
account.setMailbox(mailbox);
}
}
while (line != "");
}
return is;
}
ostream& operator<<(ostream& os, Account& account)
{
string host = account.getHost();
entities(host, '&', "&");
entities(host, '<', "<");
entities(host, '>', ">");
os << "\n" << " " << host << "\n";
if (account.getPort() != 143)
{
os << " " << account.getPort() << "\n";
}
string login = account.getLogin();
entities(login, '&', "&");
entities(login, '<', "<");
entities(login, '>', ">");
os << " " << login << "\n";
string name = account.getName();
entities(name, '&', "&");
entities(name, '<', "<");
entities(name, '>', ">");
os << " " << name << "\n";
string email = account.getEmail();
entities(email, '&', "&");
entities(email, '<', "<");
entities(email, '>', ">");
os << " " << email << "\n";
if (account.getPassword() != "")
{
string password = account.getPassword();
entities(password, '&', "&");
entities(password, '<', "<");
entities(password, '>', ">");
os << " " << password << "\n";
}
if (account.getMailbox() != "INBOX")
{
string mailbox = account.getMailbox();
entities(mailbox, '&', "&");
entities(mailbox, '<', "<");
entities(mailbox, '>', ">");
os << " " << mailbox << "\n";
}
os << "";
return os;
}