Swift_Signers_DKIMSigner::canonicalizeBody PHP Method

canonicalizeBody() protected method

protected canonicalizeBody ( $string )
    protected function canonicalizeBody($string)
    {
        $len = strlen($string);
        $canon = '';
        $method = $this->bodyCanon == 'relaxed';
        for ($i = 0; $i < $len; ++$i) {
            if ($this->bodyCanonIgnoreStart > 0) {
                --$this->bodyCanonIgnoreStart;
                continue;
            }
            switch ($string[$i]) {
                case "\r":
                    $this->bodyCanonLastChar = "\r";
                    break;
                case "\n":
                    if ($this->bodyCanonLastChar == "\r") {
                        if ($method) {
                            $this->bodyCanonSpace = false;
                        }
                        if ($this->bodyCanonLine == '') {
                            ++$this->bodyCanonEmptyCounter;
                        } else {
                            $this->bodyCanonLine = '';
                            $canon .= "\r\n";
                        }
                    } else {
                        // Wooops Error
                        // todo handle it but should never happen
                    }
                    break;
                case ' ':
                case "\t":
                    if ($method) {
                        $this->bodyCanonSpace = true;
                        break;
                    }
                default:
                    if ($this->bodyCanonEmptyCounter > 0) {
                        $canon .= str_repeat("\r\n", $this->bodyCanonEmptyCounter);
                        $this->bodyCanonEmptyCounter = 0;
                    }
                    if ($this->bodyCanonSpace) {
                        $this->bodyCanonLine .= ' ';
                        $canon .= ' ';
                        $this->bodyCanonSpace = false;
                    }
                    $this->bodyCanonLine .= $string[$i];
                    $canon .= $string[$i];
            }
        }
        $this->addToBodyHash($canon);
    }

Usage Example

 protected function canonicalizeBody($string)
 {
     if (!$this->peclLoaded) {
         return parent::canonicalizeBody($string);
     }
     if (false && $this->dropFirstLF === true) {
         if ($string[0] == "\r" && $string[1] == "\n") {
             $string = substr($string, 2);
         }
     }
     $this->dropFirstLF = false;
     if (strlen($string)) {
         $this->dkimHandler->body($string);
     }
 }