use App\Util; // Api Start2 $app->post('/start2/upload', function (Request $request) { $rules = ['password' => 'required|alpha_dash|between:5,50', 'data' => 'required|json']; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return Util::errorResponse('data invalid'); } $inputs = $request->all(); if (env('ADMIN_PASSWORD', 'admin') !== $inputs['password']) { return Util::errorResponse('incorrect password'); } $start2 = json_decode($inputs['data'], true); if (Util::exists('api_start2.json')) { $data = Util::load('api_start2.json'); if (Util::compareJson($data, $start2)) { return Util::errorResponse('duplicate start2 data'); } } Util::dump('api_start2.json', $start2); $datetime = new DateTime(); $today = $datetime->format('YmdH'); Util::dump("start2/{$today}.json", $start2); Queue::push(function ($job) { Artisan::call('parse:start2'); $job->delete(); }); return Util::successResponse(); }); $app->get('/start2', function () { try {
/** * @param mixed $srcJson * @param mixed $dstJson * @return bool */ public static function compareJson($srcJson, $dstJson) { if (!is_array($srcJson) && !is_array($dstJson)) { return $srcJson === $dstJson; } if (!is_array($srcJson) && is_array($dstJson) || is_array($srcJson) && !is_array($dstJson)) { return false; } foreach ($srcJson as $key => $value) { if (!array_key_exists($key, $dstJson)) { return false; } if (is_array($value)) { if (!is_array($dstJson[$key])) { return false; } if (Util::compareJson($srcJson[$key], $dstJson[$key])) { continue; } else { return false; } } if ($value !== $dstJson[$key]) { return false; } } return true; }