#ifndef CONTENT_BROWSER_SMS_SMS_PARSER_H_
#define CONTENT_BROWSER_SMS_SMS_PARSER_H_
#include <string_view>
#include "content/common/content_export.h"
#include "content/public/browser/sms_fetcher.h"
#include "url/origin.h"
namespace content {
class CONTENT_EXPORT SmsParser {
public:
enum class SmsParsingStatus {
kParsed = 0,
kOTPFormatRegexNotMatch = 1,
kHostAndPortNotParsed = 2,
kGURLNotValid = 3,
kMaxValue = kGURLNotValid,
};
struct CONTENT_EXPORT Result {
Result(const url::Origin& top_origin,
const url::Origin& embedded_origin,
const std::string& one_time_code);
explicit Result(SmsParsingStatus);
Result(const Result& other);
~Result();
bool IsValid() const { return parsing_status == SmsParsingStatus::kParsed; }
SmsFetcher::OriginList GetOriginList() const;
const url::Origin top_origin;
const url::Origin embedded_origin;
const std::string one_time_code;
SmsParsingStatus parsing_status;
};
static Result Parse(std::string_view sms);
};
}
#endif