예제 #1
0
파일: WebApp.php 프로젝트: lord2800/dynamo
 /** @codeCoverageIgnore */
 public static function create()
 {
     $injector = new Injector();
     $injector->bind(Injector::class, $injector);
     $request = HttpRequest::create();
     $response = new HttpResponse();
     $router = new Router();
     return new static($injector, $router, $request, $response);
 }
예제 #2
0
 public function __invoke(HttpRequest $request, HttpResponse $response)
 {
     $path = $this->path . substr($request->getUrl(), 1);
     $fn = $this->filter;
     if ($fn($path)) {
         $response->setContentEncoding(HttpResponse::GZIP);
         if (is_dir($path) && $this->hasIndex) {
             // serve the index of the specified path
             $fn = $this->index;
             $response->setContentType('text/html');
             $response->setBody($fn($path));
         } else {
             if (is_file($path)) {
                 $response->setContentType($this->finfo->file($path, FILEINFO_MIME_TYPE));
                 $response->setBody(fopen($path, 'r'));
             }
         }
     }
 }
예제 #3
0
파일: CORS.php 프로젝트: lord2800/dynamo
 public function __invoke(HttpRequest $request, HttpResponse $response)
 {
     $origin = $request->getHeader('Origin');
     if (!empty($origin)) {
         if (in_array($origin, $this->domains)) {
             $response->setHeader('Access-Control-Allow-Origin', $origin);
             if (!!$this->credentials) {
                 $response->setHeader('Access-Control-Allow-Credentials', !!$this->credentials ? 'true' : 'false');
             }
             if (!empty($this->methods)) {
                 $response->setHeader('Access-Control-Allow-Methods', implode(', ', $this->methods));
             }
             if (!empty($this->allowHeaders)) {
                 $response->setHeader('Access-Control-Allow-Headers', implode(', ', $this->allowHeaders));
             }
             if (!empty($this->exposeHeaders)) {
                 $response->setHeader('Access-Control-Expose-Headers', implode(', ', $this->exposeHeaders));
             }
             if (!empty($this->ttl)) {
                 $response->setHeader('Access-Control-Max-Age', $this->ttl);
             }
         }
     }
 }