From 11c038d492b7d73ee7c82f919e95a9b8c1008ea3 Mon Sep 17 00:00:00 2001
From: "p.belezov"
Date: Tue, 23 Jan 2024 17:55:28 +0800
Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?=
=?UTF-8?q?=D0=B2=20=D1=81=D0=B0=D0=B9=D1=82=20=D1=88=D0=B8=D1=84=D1=80=20?=
=?UTF-8?q?=D0=A6=D0=B5=D0=B7=D0=B0=D1=80=D1=8F=20=D0=BF=D0=BE=20=D1=80?=
=?UTF-8?q?=D0=BE=D1=83=D1=82=D1=83=20/caesar?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/Api/V1/IndexController.php | 127 ++++++++++++++++
app/Providers/RouteServiceProvider.php | 4 +-
resources/App.vue | 2 +-
resources/caesar.js | 16 ++
resources/views/caesar/Caesar.vue | 142 ++++++++++++++++++
resources/views/caesar/caesar.blade.php | 13 ++
resources/views/{ => resume}/Resume.vue | 0
resources/views/{ => resume}/resume.blade.php | 0
routes/{api.php => api_v1.php} | 4 +-
routes/web.php | 6 +-
vite.config.js | 2 +-
11 files changed, 308 insertions(+), 8 deletions(-)
create mode 100644 app/Http/Controllers/Api/V1/IndexController.php
create mode 100644 resources/caesar.js
create mode 100644 resources/views/caesar/Caesar.vue
create mode 100644 resources/views/caesar/caesar.blade.php
rename resources/views/{ => resume}/Resume.vue (100%)
rename resources/views/{ => resume}/resume.blade.php (100%)
rename routes/{api.php => api_v1.php} (80%)
diff --git a/app/Http/Controllers/Api/V1/IndexController.php b/app/Http/Controllers/Api/V1/IndexController.php
new file mode 100644
index 0000000..4662793
--- /dev/null
+++ b/app/Http/Controllers/Api/V1/IndexController.php
@@ -0,0 +1,127 @@
+normalizeShift($shift, $language);
+ $result_text = '';
+ if ($language == 'Ru'){
+ if ($cd == 0){
+ $result_text = $this->ruEncipher($text, $shift);
+ } elseif ($cd == 1){
+ $result_text = $this->ruDecipher($text, $shift);
+ }
+ } elseif ($language == 'En') {
+ if ($cd == 0){
+ $result_text = $this->enEncipher($text, $shift);
+ } elseif ($cd == 1){
+ $result_text = $this->enDecipher($text, $shift);
+ }
+ }
+ return $result_text;
+ }
+
+ public function normalizeShift($shift, $alphabet)
+ {
+ if ($alphabet == 'Ru'){
+ if ($shift > 32){
+ while ($shift > 32)
+ {
+ $shift = $shift - 32;
+ }
+ }
+ return $shift;
+ } elseif ($alphabet == 'En') {
+ if ($shift > 26){
+ while ($shift > 26)
+ {
+ $shift = $shift - 26;
+ }
+ }
+ return $shift;
+ }
+ }
+
+ public function enCipher($ch, $key)
+ {
+ if (!ctype_alpha($ch))
+ return $ch;
+
+ $offset = ord(ctype_upper($ch) ? 'A' : 'a');
+ return chr(fmod(((ord($ch) + $key) - $offset), 26) + $offset);
+ }
+
+ public function enEncipher($input, $key)
+ {
+ $output = "";
+
+ $inputArr = str_split($input);
+ foreach ($inputArr as $ch)
+ $output .= $this->enCipher($ch, $key);
+ return $output;
+ }
+
+ public function enDecipher($input, $key)
+ {
+ return $this->enEncipher($input, 26 - $key);
+ }
+
+ public function ruCipher($ch, $key)
+ {
+ $regexp = "/[А-ЯЁа-яё]/";
+ $regexp_upper = "/[А-ЯЁ]\{Lu}/";
+ if (!preg_match($regexp, $ch))
+ {
+ return $ch;
+ }
+
+ $offset = mb_ord(preg_match($regexp_upper, $ch) ? 'А' : 'а', "UTF-8");
+ return mb_chr(fmod(((mb_ord($ch, "UTF-8") + $key) - $offset), 32) + $offset, "UTF-8");
+ }
+
+ function ruCipherReverse($ch, $key)
+ {
+ $regexp = "/[А-ЯЁа-яё]/";
+ $regexp_upper = "/[А-ЯЁ]\{Lu}/";
+ if (!preg_match($regexp, $ch))
+ {
+ return $ch;
+ }
+
+ $offset = mb_ord(preg_match($regexp_upper, $ch) ? 'А' : 'а', "UTF-8");
+ return mb_chr(fmod(((mb_ord($ch, "UTF-8") - $key) - $offset), 32) + $offset, "UTF-8");
+ }
+
+ public function ruEncipher($input, $key)
+ {
+ $output = "";
+
+ $inputArr = mb_str_split($input, 1, "UTF-8");
+ foreach ($inputArr as $ch)
+ $output .= $this->ruCipher($ch, $key);
+
+ return $output;
+ }
+
+ public function ruDecipher($input, $key)
+ {
+ $output = "";
+
+ $inputArr = mb_str_split($input, 1, "UTF-8");
+ foreach ($inputArr as $ch)
+ $output .= $this->ruCipherReverse($ch, $key);
+
+ return $output;
+ }
+}
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
index 1cf5f15..b7f5685 100644
--- a/app/Providers/RouteServiceProvider.php
+++ b/app/Providers/RouteServiceProvider.php
@@ -30,8 +30,8 @@ class RouteServiceProvider extends ServiceProvider
$this->routes(function () {
Route::middleware('api')
- ->prefix('api')
- ->group(base_path('routes/api.php'));
+ ->prefix('api/v1')
+ ->group(base_path('routes/api_v1.php'));
Route::middleware('web')
->group(base_path('routes/web.php'));
diff --git a/resources/App.vue b/resources/App.vue
index d77e6b3..ca74cc9 100644
--- a/resources/App.vue
+++ b/resources/App.vue
@@ -5,7 +5,7 @@
+
+
diff --git a/resources/views/caesar/caesar.blade.php b/resources/views/caesar/caesar.blade.php
new file mode 100644
index 0000000..fea4ebc
--- /dev/null
+++ b/resources/views/caesar/caesar.blade.php
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Caesar
+ @vite('resources/caesar.js')
+ @vite('resources/css/app.css')
+
+
+
+
+
diff --git a/resources/views/Resume.vue b/resources/views/resume/Resume.vue
similarity index 100%
rename from resources/views/Resume.vue
rename to resources/views/resume/Resume.vue
diff --git a/resources/views/resume.blade.php b/resources/views/resume/resume.blade.php
similarity index 100%
rename from resources/views/resume.blade.php
rename to resources/views/resume/resume.blade.php
diff --git a/routes/api.php b/routes/api_v1.php
similarity index 80%
rename from routes/api.php
rename to routes/api_v1.php
index 889937e..6a3d5c2 100644
--- a/routes/api.php
+++ b/routes/api_v1.php
@@ -14,6 +14,4 @@ use Illuminate\Support\Facades\Route;
|
*/
-Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
- return $request->user();
-});
+Route::get('/', 'App\Http\Controllers\Api\V1\IndexController@index')->name('caesar');
diff --git a/routes/web.php b/routes/web.php
index f1d0c69..0a4a1d9 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -18,8 +18,12 @@ Route::get('/', function () {
return view('welcome');
});
+Route::get('/caesar', function () {
+ return view('caesar/caesar');
+});
+
Route::get('/resume', function () {
- return view('resume');
+ return view('resume/resume');
});
Route::get('/download/{file}', 'App\Http\Controllers\DownloadController@download');
diff --git a/vite.config.js b/vite.config.js
index 9fe42ed..26c67d0 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -6,7 +6,7 @@ export default defineConfig({
plugins: [
vue(),
laravel({
- input: ['resources/css/app.css', 'resources/app.js', 'resources/welcome.js'],
+ input: ['resources/css/app.css', 'resources/app.js', 'resources/welcome.js', 'resources/caesar.js'],
refresh: true,
}),
],