#include "snaverurlvalidator.h" #include #include const QString SNaverUrlValidator::m_strSubDomain = "www"; const QString SNaverUrlValidator::m_strProtocol = "http"; const QString SNaverUrlValidator::m_strBaseHost = "blog.naver.com"; const QString SNaverUrlValidator::m_strSecondaryHost = "blog.me"; SNaverUrlValidator::SNaverUrlValidator(QString url) : m_isBaseHost(false), m_isSecondaryHost(false) { m_strUrl = url.trimmed(); } QString SNaverUrlValidator::makeUrl() { if (!validateUrl()) { return ""; } QString strUrl = m_strProtocol + "://" + m_strBaseHost + "/" + m_strUserId + "/" + m_strArticleNum; return strUrl; } bool SNaverUrlValidator::validateUrl() { int nStartIndex = getHostStartPosition(); if (nStartIndex < 0) { return false; } nStartIndex = checkHost(nStartIndex); if (nStartIndex < 0) { return false; } if (checkPath(nStartIndex) < 0) { return false; } return true; } int SNaverUrlValidator::getHostStartPosition() { int nHostStartPosition = m_strUrl.indexOf(':'); if (nHostStartPosition == -1) { return 0; } if (m_strUrl.at(nHostStartPosition+1) != '/' || m_strUrl.at(nHostStartPosition+2) != '/') { return -1; } return nHostStartPosition + 3; } int SNaverUrlValidator::checkHost(int _nHostStartPosition) { int nHostEndPosition = m_strUrl.indexOf('/', _nHostStartPosition) - 1; if (nHostEndPosition < 0) { return -1; } m_isBaseHost = m_strUrl.contains(m_strBaseHost); m_isSecondaryHost = m_strUrl.contains(m_strSecondaryHost); if ((m_isBaseHost == false) && (m_isSecondaryHost == false)) { return -2; } if (m_isSecondaryHost) { int nHostLength = nHostEndPosition - _nHostStartPosition + 1; QString strHost = m_strUrl.mid(_nHostStartPosition, nHostLength); QStringList listHostSplit = strHost.split('.'); for (int i=0; i