File: /python/moda/public_html/tech/old/vendor/zbateson/mail-mime-parser/src/Header/AbstractHeader.php
<?php
/**
* This file is part of the ZBateson\MailMimeParser project.
*
* @license http://opensource.org/licenses/bsd-license.php BSD
*/
namespace ZBateson\MailMimeParser\Header;
use ZBateson\MailMimeParser\Header\Consumer\AbstractConsumer;
use ZBateson\MailMimeParser\Header\Consumer\ConsumerService;
/**
* Abstract base class representing a mime email's header.
*
* The base class sets up the header's consumer, sets the name of the header and
* calls the consumer to parse the header's value.
*
* AbstractHeader::getConsumer is an abstract method that must be overridden to
* return an appropriate Consumer\AbstractConsumer type.
*
* @author Zaahid Bateson
*/
abstract class AbstractHeader
{
/**
* @var string the name of the header
*/
protected $name;
/**
* @var \ZBateson\MailMimeParser\Header\Part\HeaderPart[] the header's parts
* (as returned from the consumer)
*/
protected $parts;
/**
* @var string the raw value
*/
protected $rawValue;
/**
* Assigns the header's name and raw value, then calls getConsumer and
* setParseHeaderValue to extract a parsed value.
*
* @param ConsumerService $consumerService
* @param string $name
* @param string $value
*/
public function __construct(ConsumerService $consumerService, $name, $value)
{
$this->name = $name;
$this->rawValue = $value;
$consumer = $this->getConsumer($consumerService);
$this->setParseHeaderValue($consumer);
}
/**
* Returns the header's Consumer
*
* @param ConsumerService $consumerService
* @return \ZBateson\MailMimeParser\Header\Consumer\AbstractConsumer
*/
abstract protected function getConsumer(ConsumerService $consumerService);
/**
* Calls the consumer and assigns the parsed parts to member variables.
*
* The default implementation assigns the returned value to $this->part.
*
* @param AbstractConsumer $consumer
*/
protected function setParseHeaderValue(AbstractConsumer $consumer)
{
$this->parts = $consumer($this->rawValue);
}
/**
* Returns an array of HeaderPart objects associated with this header.
*
* @return \ZBateson\MailMimeParser\Header\Part\HeaderPart[]
*/
public function getParts()
{
return $this->parts;
}
/**
* Returns the parsed value of the header -- calls getValue on $this->part
*
* @return string
*/
public function getValue()
{
if (!empty($this->parts)) {
return $this->parts[0]->getValue();
}
return null;
}
/**
* Returns the raw value of the header prior to any processing.
*
* @return string
*/
public function getRawValue()
{
return $this->rawValue;
}
/**
* Returns the name of the header.
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Returns the string representation of the header. At the moment this is
* just in the form of:
*
* <HeaderName>: <RawValue>
*
* No additional processing is performed (for instance to wrap long lines.)
*
* @return string
*/
public function __toString()
{
return "{$this->name}: {$this->rawValue}";
}
}