Exemple #1
0
 /**
  * This event is triggered after GET requests.
  *
  * This is used to transform data into jCal, if this was requested.
  *
  * @param RequestInterface $request
  * @param ResponseInterface $response
  * @return void
  */
 function httpAfterGet(RequestInterface $request, ResponseInterface $response)
 {
     if (strpos($response->getHeader('Content-Type'), 'text/calendar') === false) {
         return;
     }
     $result = HTTP\Util::negotiate($request->getHeader('Accept'), ['text/calendar', 'application/calendar+json']);
     if ($result !== 'application/calendar+json') {
         // Do nothing
         return;
     }
     // Transforming.
     $vobj = VObject\Reader::read($response->getBody());
     $jsonBody = json_encode($vobj->jsonSerialize());
     $response->setBody($jsonBody);
     $response->setHeader('Content-Type', 'application/calendar+json');
     $response->setHeader('Content-Length', strlen($jsonBody));
 }
Exemple #2
0
 /**
  * This helper function performs the content-type negotiation for vcards.
  *
  * It will return one of the following strings:
  * 1. vcard3
  * 2. vcard4
  * 3. jcard
  *
  * It defaults to vcard3.
  *
  * @param string $input
  * @param string $mimeType
  * @return string
  */
 protected function negotiateVCard($input, &$mimeType = null)
 {
     $result = HTTP\Util::negotiate($input, ['text/x-vcard', 'text/vcard', 'text/vcard; version=4.0', 'text/vcard; version=3.0', 'application/vcard+json']);
     $mimeType = $result;
     switch ($result) {
         default:
         case 'text/x-vcard':
         case 'text/vcard':
         case 'text/vcard; version=3.0':
             $mimeType = 'text/vcard';
             return 'vcard3';
         case 'text/vcard; version=4.0':
             return 'vcard4';
         case 'application/vcard+json':
             return 'jcard';
             // @codeCoverageIgnoreStart
     }
     // @codeCoverageIgnoreEnd
 }
Exemple #3
0
    /**
     * This helper function performs the content-type negotiation for vcards.
     *
     * It will return one of the following strings:
     * 1. vcard3
     * 2. vcard4
     * 3. jcard
     *
     * It defaults to vcard3.
     *
     * @param string $input
     * @param string $mimeType
     * @return string
     */
    protected function negotiateVCard($input, &$mimeType = null) {

        $result = HTTP\Util::negotiate(
            $input,
            [
                // Most often used mime-type. Version 3
                'text/x-vcard',
                // The correct standard mime-type. Defaults to version 3 as
                // well.
                'text/vcard',
                // vCard 4
                'text/vcard; version=4.0',
                // vCard 3
                'text/vcard; version=3.0',
                // jCard
                'application/vcard+json',
            ]
        );

        $mimeType = $result;
        switch ($result) {

            default :
            case 'text/x-vcard' :
            case 'text/vcard' :
            case 'text/vcard; version=3.0' :
                $mimeType = 'text/vcard';
                return 'vcard3';
            case 'text/vcard; version=4.0' :
                return 'vcard4';
            case 'application/vcard+json' :
                return 'jcard';

        // @codeCoverageIgnoreStart
        }
        // @codeCoverageIgnoreEnd

    }