primo commit
This commit is contained in:
		
							
								
								
									
										158
									
								
								libraries/vendor/willdurand/negotiation/src/Negotiation/BaseAccept.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								libraries/vendor/willdurand/negotiation/src/Negotiation/BaseAccept.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,158 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Negotiation; | ||||
|  | ||||
| abstract class BaseAccept | ||||
| { | ||||
|     /** | ||||
|      * @var float | ||||
|      */ | ||||
|     private $quality = 1.0; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     private $normalized; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     private $value; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     private $parameters; | ||||
|  | ||||
|     /** | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $type; | ||||
|  | ||||
|     /** | ||||
|      * @param string $value | ||||
|      */ | ||||
|     public function __construct($value) | ||||
|     { | ||||
|         list($type, $parameters) = $this->parseParameters($value); | ||||
|  | ||||
|         if (isset($parameters['q'])) { | ||||
|             $this->quality = (float) $parameters['q']; | ||||
|             unset($parameters['q']); | ||||
|         } | ||||
|  | ||||
|         $type = trim(strtolower($type)); | ||||
|  | ||||
|         $this->value      = $value; | ||||
|         $this->normalized = $type . ($parameters ? "; " . $this->buildParametersString($parameters) : ''); | ||||
|         $this->type       = $type; | ||||
|         $this->parameters = $parameters; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getNormalizedValue() | ||||
|     { | ||||
|         return $this->normalized; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getValue() | ||||
|     { | ||||
|         return $this->value; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return string | ||||
|      */ | ||||
|     public function getType() | ||||
|     { | ||||
|         return $this->type; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return float | ||||
|      */ | ||||
|     public function getQuality() | ||||
|     { | ||||
|         return $this->quality; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @return array | ||||
|      */ | ||||
|     public function getParameters() | ||||
|     { | ||||
|         return $this->parameters; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string $key | ||||
|      * @param mixed  $default | ||||
|      * | ||||
|      * @return string|null | ||||
|      */ | ||||
|     public function getParameter($key, $default = null) | ||||
|     { | ||||
|         return isset($this->parameters[$key]) ? $this->parameters[$key] : $default; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string $key | ||||
|      * | ||||
|      * @return boolean | ||||
|      */ | ||||
|     public function hasParameter($key) | ||||
|     { | ||||
|         return isset($this->parameters[$key]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * | ||||
|      * @param  string|null $acceptPart | ||||
|      * @return array | ||||
|      */ | ||||
|     private function parseParameters($acceptPart) | ||||
|     { | ||||
|         if ($acceptPart === null) { | ||||
|             return ['', []]; | ||||
|         } | ||||
|  | ||||
|         $parts = explode(';', $acceptPart); | ||||
|         $type  = array_shift($parts); | ||||
|  | ||||
|         $parameters = []; | ||||
|         foreach ($parts as $part) { | ||||
|             $part = explode('=', $part); | ||||
|  | ||||
|             if (2 !== count($part)) { | ||||
|                 continue; // TODO: throw exception here? | ||||
|             } | ||||
|  | ||||
|             $key = strtolower(trim($part[0])); // TODO: technically not allowed space around "=". throw exception? | ||||
|             $parameters[$key] = trim($part[1], ' "'); | ||||
|         } | ||||
|  | ||||
|         return [ $type, $parameters ]; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @param string $parameters | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     private function buildParametersString($parameters) | ||||
|     { | ||||
|         $parts = []; | ||||
|  | ||||
|         ksort($parameters); | ||||
|         foreach ($parameters as $key => $val) { | ||||
|             $parts[] = sprintf('%s=%s', $key, $val); | ||||
|         } | ||||
|  | ||||
|         return implode('; ', $parts); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user