Code Duplication    Length = 56-57 lines in 2 locations

PHPDaemon/HTTPRequest/Generic.php 1 location

@@ 669-725 (lines=57) @@
666
     * @throws \PHPDaemon\Request\RequestHeadersAlreadySent
667
     * @return boolean Success
668
     */
669
    public function header($s, $replace = true, $code = false)
670
    {
671
        if (!$code) {
672
            $this->status($code);
673
        }
674
675
        if ($this->headers_sent) {
676
            throw new RequestHeadersAlreadySent;
677
        }
678
        $s = strtr($s, "\r\n", '  ');
679
680
        $e = explode(':', $s, 2);
681
682
        if (!isset($e[1])) {
683
            $e[0] = 'STATUS';
684
685
            if (strncmp($s, 'HTTP/', 5) === 0) {
686
                $s = substr($s, 9);
687
            }
688
        }
689
690
        $k = strtr(strtoupper($e[0]), Generic::$htr);
691
692
        if ($k === 'CONTENT_TYPE') {
693
            self::parseStr(strtolower($e[1]), $ctype, true);
694
            if (!isset($ctype['charset'])) {
695
                $ctype['charset'] = $this->upstream->pool->config->defaultcharset->value;
696
697
                $s = $e[0] . ': ';
698
                $i = 0;
699
                foreach ($ctype as $k => $v) {
700
                    $s .= ($i > 0 ? '; ' : '') . $k . ($v !== '' ? '=' . $v : '');
701
                    ++$i;
702
                }
703
            }
704
        }
705
706
        if ($k === 'SET_COOKIE') {
707
            $k .= '_' . ++$this->cookieNum;
708
        } elseif (!$replace && isset($this->headers[$k])) {
709
            return false;
710
        }
711
712
        $this->headers[$k] = $s;
713
714
        if ($k === 'CONTENT_LENGTH') {
715
            $this->contentLength = (int)$e[1];
716
        } elseif ($k === 'LOCATION') {
717
            $this->status(301);
718
        }
719
720
        if (Daemon::$compatMode) {
721
            is_callable('header_native') ? header_native($s) : header($s);
722
        }
723
724
        return true;
725
    }
726
727
    /**
728
     * Removes a header

PHPDaemon/Servers/WebSocket/Connection.php 1 location

@@ 497-552 (lines=56) @@
494
     * @throws \PHPDaemon\Request\RequestHeadersAlreadySent
495
     * @return boolean          Success
496
     */
497
    public function header($s, $replace = true, $code = false)
498
    {
499
        if ($code) {
500
            $this->status($code);
501
        }
502
503
        if ($this->headers_sent) {
504
            throw new RequestHeadersAlreadySent;
505
        }
506
        $s = strtr($s, "\r\n", '  ');
507
508
        $e = explode(':', $s, 2);
509
510
        if (!isset($e[1])) {
511
            $e[0] = 'STATUS';
512
513
            if (strncmp($s, 'HTTP/', 5) === 0) {
514
                $s = substr($s, 9);
515
            }
516
        }
517
518
        $k = strtr(strtoupper($e[0]), Generic::$htr);
519
520
        if ($k === 'CONTENT_TYPE') {
521
            Generic::parseStr(strtolower($e[1]), $ctype, true);
522
            if (!isset($ctype['charset'])) {
523
                $ctype['charset'] = $this->upstream->pool->config->defaultcharset->value;
524
525
                $s = $e[0] . ': ';
526
                $i = 0;
527
                foreach ($ctype as $k => $v) {
528
                    $s .= ($i > 0 ? '; ' : '') . $k . ($v !== '' ? '=' . $v : '');
529
                    ++$i;
530
                }
531
            }
532
        }
533
        if ($k === 'SET_COOKIE') {
534
            $k .= '_' . ++$this->cookieNum;
535
        } elseif (!$replace && isset($this->headers[$k])) {
536
            return false;
537
        }
538
539
        $this->headers[$k] = $s;
540
541
        if ($k === 'CONTENT_LENGTH') {
542
            $this->contentLength = (int)$e[1];
543
        } elseif ($k === 'LOCATION') {
544
            $this->status(301);
545
        }
546
547
        if (Daemon::$compatMode) {
548
            is_callable('header_native') ? header_native($s) : header($s);
549
        }
550
551
        return true;
552
    }
553
}
554