<?php

namespace App\Http\Middleware;

use Closure;
use App\Http\Output;
use App\Http\Controllers\LoginController;
use App\Http\Error;
use Config;

class JsonpCallback
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $callback = $request->input('callback', null);
        $result = $next($request);
        if (!$callback)
            return $result;

        if (strpos($request->path(), 'api/') !== 0)
            return $result;
        if (!preg_match('/^[_A-Za-z0-9]+$/', $callback))
            return $result;

        if (is_array($result)) {
            $result = $callback . '(' . json_encode($result) . ')';
        } else {
            $result->setContent($callback . '(' . $result->content() . ')');
        }

        return $result;
    }
}