Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/ashleyrabbitt_aiside.json
T

1 line
84 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "ashleyrabbitt/aiside", "files": {"config/deepseek.php": {"69bc9fee3047629be62f349097b1e4d5b5efcadb": {"t": 1785745764.4162157, "n": 900, "h": "01d87353efb463d7", "c": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Gemini API Key\n |--------------------------------------------------------------------------\n |\n | Here you may specify your Gemini API Key and organization. This will be\n | used to authenticate with the Gemini API - you can find your API key\n | on Google AI Studio, at https://makersuite.google.com.\n */\n\n 'api_key' => env('DEEPSEEK_API_KEY'),\n\n /*\n |--------------------------------------------------------------------------\n | Request Timeout\n |--------------------------------------------------------------------------\n |\n | The timeout may be used to specify the maximum number of seconds to wait\n | for a response. By default, the client will time out after 30 seconds.\n */\n\n 'request_timeout' => env('DEEPSEEK_REQUEST_TIMEOUT', 30),\n];\n"}, "4152bbe6d68c8f6d01c49e2cf339d1f44c0666ab": {"t": 1785756278.8439217, "n": 900, "h": "01d87353efb463d7", "c": "<?php\n\nreturn [\n\n /*\n |--------------------------------------------------------------------------\n | Gemini API Key\n |--------------------------------------------------------------------------\n |\n | Here you may specify your Gemini API Key and organization. This will be\n | used to authenticate with the Gemini API - you can find your API key\n | on Google AI Studio, at https://makersuite.google.com.\n */\n\n 'api_key' => env('DEEPSEEK_API_KEY'),\n\n /*\n |--------------------------------------------------------------------------\n | Request Timeout\n |--------------------------------------------------------------------------\n |\n | The timeout may be used to specify the maximum number of seconds to wait\n | for a response. By default, the client will time out after 30 seconds.\n */\n\n 'request_timeout' => env('DEEPSEEK_REQUEST_TIMEOUT', 30),\n];\n"}}, "app/Http/Controllers/Dashboard/SettingsController.php": {"69bc9fee3047629be62f349097b1e4d5b5efcadb": {"t": 1785746151.540055, "n": 40621, "h": "2a820d33e439ddcc", "c": "<?php\n\nnamespace App\\Http\\Controllers\\Dashboard;\n\nuse App\\Domains\\Engine\\Enums\\EngineEnum;\nuse App\\Domains\\Entity\\Enums\\EntityEnum;\nuse App\\Extensions\\ChatbotVoice\\System\\Models\\ExtVoiceChatbot;\nuse App\\Helpers\\Classes\\ApiHelper;\nuse App\\Helpers\\Classes\\Helper;\nuse App\\Helpers\\Classes\\MarketplaceHelper;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Http\\Requests\\Admin\\Settings\\GeneralSettingsRequest;\nuse App\\Models\\Extension;\nuse App\\Models\\OpenAIGenerator;\nuse App\\Models\\PrivacyTerms;\nuse App\\Models\\Setting;\nuse App\\Models\\SettingTwo;\nuse App\\Models\\User;\nuse App\\Services\\Common\\MenuService;\nuse Exception;\nuse GuzzleHttp\\Client;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Http;\nuse Illuminate\\Support\\Str;\nuse Illuminate\\View\\View;\nuse JsonException;\nuse OpenAI;\nuse Throwable;\n\nclass SettingsController extends Controller\n{\n public function general()\n {\n return view('panel.admin.settings.general', [\n 'chatSetting' => Extension::query()\n ->where('slug', 'chat-setting')\n ->where('installed', true)\n ->exists(),\n ]);\n }\n\n public function generalSave(GeneralSettingsRequest $request): JsonResponse\n {\n if (Helper::appIsNotDemo()) {\n $settings = Setting::getCache();\n $settings_two = SettingTwo::getCache();\n\n $metaTitleLocal = $request->metaTitleLocal;\n $metaDescLocal = $request->metaDescLocal;\n\n if ($metaTitleLocal === $settings_two->languages_default) {\n $settings->meta_title = $request->meta_title;\n } else {\n $meta_title = PrivacyTerms::where('type', 'meta_title')->where('lang', $metaTitleLocal)->first();\n if ($meta_title) {\n $meta_title->content = $request->meta_title;\n $meta_title->save();\n } else {\n $new_meta_title = new PrivacyTerms;\n $new_meta_title->type = 'meta_title';\n $new_meta_title->lang = $metaTitleLocal;\n $new_meta_title->content = $request->meta_title;\n $new_meta_title->save();\n }\n }\n\n if ($metaDescLocal === $settings_two->languages_default) {\n $settings->meta_description = $request->meta_description;\n } else {\n $meta_description = PrivacyTerms::where('type', 'meta_desc')->where('lang', $metaDescLocal)->first();\n if ($meta_description) {\n $meta_description->content = $request->meta_description;\n $meta_description->save();\n } else {\n $new_meta_description = new PrivacyTerms;\n $new_meta_description->type = 'meta_desc';\n $new_meta_description->lang = $metaDescLocal;\n $new_meta_description->content = $request->meta_description;\n $new_meta_description->save();\n }\n }\n\n $inputs = [];\n $fields = [\n 'chat_setting_for_customer',\n 'default_ai_engine',\n 'default_aw_image_engine',\n 'photo_studio',\n ];\n foreach ($fields as $field) {\n if ($request->has($field)) {\n $inputs[$field] = $request->$field;\n }\n }\n if (! empty($inputs)) {\n setting($inputs)->save();\n }\n\n $settings->site_name = $request->site_name;\n $settings->site_url = $request->site_url;\n $settings->site_email = $request->site_email;\n $settings->default_country = $request->default_country;\n $settings->default_currency = $request->default_currency;\n $settings->register_active = $request->register_active;\n $settings->login_with_otp = $request->login_with_otp;\n $settings->tour_seen = $request->tour_seen;\n $settings->google_analytics_code = $request->google_analytics_code;\n $settings->meta_keywords = $request->meta_keywords;\n $settings->dashboard_code_before_head = $request->dashboard_code_before_head;\n $settings->dashboard_code_before_body = $request->dashboard_code_before_body;\n $settings->feature_ai_writer = $request->feature_ai_writer;\n $settings->feature_ai_rewriter = $request->feature_ai_rewriter;\n $settings->feature_ai_chat_image = $request->feature_ai_chat_image;\n $settings->feature_ai_image = $request->feature_ai_image;\n $settings_two->feature_ai_video = $request->feature_ai_video;\n $settings->feature_ai_chat = $request->feature_ai_chat;\n $settings->feature_ai_code = $request->feature_ai_code;\n $settings->feature_ai_speech_to_text = $request->feature_ai_speech_to_text;\n $settings->feature_ai_voiceover = $request->feature_ai_voiceover;\n $settings->feature_affilates = $request->feature_affilates;\n $settings->user_api_option = $request->user_api_option;\n $settings->feature_ai_article_wizard = $request->feature_ai_article_wizard;\n $settings->feature_ai_vision = $request->feature_ai_vision;\n $settings->feature_ai_pdf = $request->feature_ai_pdf;\n $settings->feature_ai_youtube = $request->feature_ai_youtube;\n $settings->feature_ai_rss = $request->feature_ai_rss;\n $settings->feature_ai_voice_clone = (bool) $request->feature_ai_voice_clone;\n $settings->team_functionality = $request->team_functionality;\n $settings->feature_ai_advanced_editor = $request->feature_ai_advanced_editor;\n $settings->login_without_confirmation = $request->login_without_confirmation;\n $settings->facebook_active = $request->facebook_active ?? 0;\n $settings->google_active = $request->google_active ?? 0;\n $settings->github_active = $request->github_active ?? 0;\n $settings->mobile_payment_active = $request->mobile_payment_active ?? 0;\n $settings->recaptcha_login = $request->recaptcha_login;\n $settings->recaptcha_register = $request->recaptcha_register;\n $settings->recaptcha_sitekey = $request->recaptcha_sitekey;\n $settings->recaptcha_secretkey = $request->recaptcha_secretkey;\n $settings->mrrobot_name = $request->mrrobot_name;\n $settings->mrrobot_search_words = $request->mrrobot_search_words;\n $settings->save();\n\n setting(\n [\n 'notification_active' => $request->notification_active,\n 'pusher_app_id' => $request->pusher_app_id,\n 'pusher_app_key' => $request->pusher_app_key,\n 'pusher_app_secret' => $request->pusher_app_secret,\n 'pusher_app_cluster' => $request->pusher_app_cluster,\n 'user_prompt_library' => $request->user_prompt_library,\n 'user_ai_image_prompt_library' => $request->user_ai_image_prompt_library,\n 'ai_voice_isolator' => $request->ai_voice_isolator,\n 'user_ai_writer_custom_templates' => $request->user_ai_writer_custom_templates,\n 'select_model_option' => $request->select_model_option,\n 'freeCreditsUponRegistration' => $request->entities,\n 'onetime_commission' => $request->onetime_commission,\n ]\n )->save();\n\n $this->toggleOpenaiTemplateStatus($settings);\n\n $settings_two->daily_limit_enabled = $request->limit;\n $settings_two->allowed_images_count = $request->daily_limit_count;\n $settings_two->openai_default_stream_server = $request->openai_default_stream_server;\n $settings_two->daily_voice_limit_enabled = $request->voice_limit;\n $settings_two->allowed_voice_count = $request->daily_voice_limit_count;\n\n $settings_two->save();\n\n $logo_types = [\n 'logo' => '',\n 'logo_dark' => 'dark',\n 'logo_sticky' => 'sticky',\n 'logo_dashboard' => 'dashboard',\n 'logo_dashboard_dark' => 'dashboard-dark',\n 'logo_collapsed' => 'collapsed',\n 'logo_collapsed_dark' => 'collapsed-dark',\n // retina\n 'logo_2x' => '2x',\n 'logo_dark_2x' => 'dark-2x',\n 'logo_sticky_2x' => 'sticky-2x',\n 'logo_dashboard_2x' => 'dashboard-2x',\n 'logo_dashboard_dark_2x' => 'dashboard-dark-2x',\n 'logo_collapsed_2x' => 'collapsed-2x',\n 'logo_collapsed_dark_2x' => 'collapsed-dark-2x',\n ];\n\n foreach ($logo_types as $logo => $logo_prefix) {\n\n if ($request->hasFile($logo)) {\n $path = 'upload/images/logo/';\n $image = $request->file($logo);\n $image_name = Str::random(4) . '-' . $logo_prefix . '-' . Str::slug($settings->site_name) . '-logo.' . $image->getClientOriginalExtension();\n\n // Resim uzantı kontrolü\n $imageTypes = ['jpg', 'jpeg', 'png', 'svg', 'webp'];\n if (! in_array(Str::lower($image->getClientOriginalExtension()), $imageTypes)) {\n $data = [\n 'errors' => ['The file extension must be jpg, jpeg, png, webp or svg.'],\n ];\n\n return response()->json($data, 419);\n }\n\n $image->move($path, $image_name);\n\n $settings->{$logo . '_path'} = $path . $image_name;\n $settings->{$logo} = $image_name;\n $settings->save();\n }\n\n }\n\n if ($request->hasFile('favicon')) {\n $path = 'upload/images/favicon/';\n $image = $request->file('favicon');\n $image_name = Str::random(4) . '-' . Str::slug($settings->site_name) . '-favicon.' . $image->getClientOriginalExtension();\n\n // Resim uzantı kontrolü\n $imageTypes = ['jpg', 'jpeg', 'png', 'svg', 'webp'];\n if (! in_array(Str::lower($image->getClientOriginalExtension()), $imageTypes)) {\n $data = [\n 'errors' => ['The file extension must be jpg, jpeg, png, webp or svg.'],\n ];\n\n return response()->json($data, 419);\n }\n\n $image->move($path, $image_name);\n\n $settings->favicon_path = $path . $image_name;\n $settings->favicon = $image_name;\n $settings->save();\n }\n\n app(MenuService::class)->regenerate();\n }\n\n return response()->json([], 200);\n }\n\n public function toggleOpenaiTemplateStatus($settings)\n {\n $templates = [\n 'ai_article_wizard_generator' => $settings->feature_ai_article_wizard,\n 'ai_writer' => $settings->feature_ai_writer,\n 'ai_rewriter' => $settings->feature_ai_rewriter,\n 'ai_chat_image' => $settings->feature_ai_chat_image,\n 'ai_image_generator' => $settings->feature_ai_image,\n 'ai_code_generator' => $settings->feature_ai_code,\n 'ai_speech_to_text' => $settings->feature_ai_speech_to_text,\n 'ai_voiceover' => $settings->feature_ai_voiceover,\n 'ai_vision' => $settings->feature_ai_vision,\n 'ai_pdf' => $settings->feature_ai_pdf,\n 'ai_youtube' => $settings->feature_ai_youtube,\n 'ai_rss' => $settings->feature_ai_rss,\n ];\n\n foreach ($templates as $key => $status) {\n OpenAIGenerator::query()->where('slug', $key)->update(['active' => $status]);\n }\n }\n\n public function anthropic(Request $request)\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.anthropic');\n }\n\n public function deepseek(Request $request)\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.deepseek');\n }\n\n public function deepseekSave(Request $request)\n {\n $data = $request->validate([\n 'deepseek_api_secret' => 'required',\n 'deepseek_default_model' => 'required|string',\n 'deepseek_max_output_length' => 'required|string',\n ]);\n\n $data['deepseek_api_secret'] = implode(',', $data['deepseek_api_secret']);\n\n setting($data)->save();\n\n return redirect()->back()->with([\n 'type' => 'success',\n 'message' => __('setting saved successfully.'),\n ]);\n }\n\n public function deepseekTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n $token = ApiHelper::setDeepseekKey();\n\n $url = 'https://api.deepseek.com/models';\n\n $response = Http::withHeaders([\n 'Accept' => 'application/json',\n 'Authorization' => \"Bearer $token\",\n ])->get($url);\n\n // Yanıtı Kontrol Etme\n if ($response->successful()) {\n echo ' <br>' . $token . ' - SUCCESS <br>';\n } else {\n echo $response->json('error.message') . ' - ' . $token . ' -FAILED <br>';\n }\n }\n\n public function anthropicTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n $token = ApiHelper::setAnthropicKey();\n\n $request = Http::withHeaders([\n 'x-api-key' => $token,\n 'Content-Type' => 'application/json',\n 'Accept' => 'application/json',\n 'anthropic-version' => '2023-06-01',\n ])->post('https://api.anthropic.com/v1/messages', [\n 'model' => setting('anthropic_default_model'),\n 'max_tokens' => (int) setting('anthropic_max_output_length'),\n 'messages' => [\n [\n 'role' => 'user',\n 'content' => 'Hello, how are you?',\n ],\n ],\n ]);\n\n if ($request->ok()) {\n echo ' <br>' . $token . ' - SUCCESS <br>';\n } else {\n echo $request->json('error.message') . ' - ' . $token . ' -FAILED <br>';\n }\n }\n\n public function anthropicSave(Request $request)\n {\n $data = $request->validate([\n 'anthropic_api_secret' => 'required|string',\n 'anthropic_default_model' => 'required|string',\n 'anthropic_max_input_length' => 'required|string',\n 'anthropic_max_output_length' => 'required|string',\n 'anthropic_bedrock_model' => 'string',\n ]);\n\n setting($data)->save();\n\n return response()->json([], 200);\n }\n\n public function gemini(Request $request)\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.gemini');\n }\n\n public function geminiTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n $newhistory = [\n [\n 'role' => 'user',\n 'parts' => [\n [\n 'text' => 'who are u.',\n ],\n ],\n ],\n ];\n\n $randomToken = ApiHelper::setGeminiKey();\n $client = app(\\App\\Domains\\Engine\\Services\\GeminiService::class);\n $response = $client\n ->setHistory($newhistory)\n ->generateContent();\n if ($response->ok()) {\n echo ' <br>' . $randomToken . ' - SUCCESS <br>';\n } else {\n echo $response->json('error.message') . ' -FAILED <br>';\n }\n }\n\n public function geminiSave(Request $request)\n {\n $data = $request->validate([\n 'gemini_api_secret' => 'required|string',\n 'gemini_default_model' => 'required|string',\n 'gemini_max_input_length' => 'required|string',\n 'gemini_max_output_length' => 'required|string',\n ]);\n setting($data)->save();\n\n return response()->json([], 200);\n }\n\n public function xAI()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.x-ai');\n }\n\n public function openai()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.openai');\n }\n\n public function stablediffusion()\n {\n return view('panel.admin.settings.stablediffusion');\n }\n\n public function unsplashapi(Request $request)\n {\n return view('panel.admin.settings.unsplashapi');\n }\n\n public function unsplashapiTest()\n {\n $client = new Client;\n $settings = SettingTwo::getCache();\n if ($settings->unsplash_api_key == '') {\n echo 'You must provide ' . EngineEnum::UNSPLASH->label() . ' API Key.';\n\n return;\n }\n\n $apiKey = $settings->unsplash_api_key;\n\n $client = new Client;\n\n try {\n $response = $client->get(\"https://api.unsplash.com/search/photos?query=Google&count=1&client_id=$apiKey\");\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n\n public function unsplashapiSave(Request $request)\n {\n $settings = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->unsplash_api_key = $request->unsplash_api_key;\n $settings->save();\n }\n\n return response()->json([], 200);\n }\n\n public function pexelsapi(Request $request)\n {\n return view('panel.admin.settings.pexels');\n }\n\n public function pexelsapiTest()\n {\n $client = new Client;\n $api = setting('pexels_api_key');\n if ($api == '') {\n echo 'You must provide Pexels API Key.';\n\n return;\n }\n\n $apiKey = $api;\n\n $client = new Client;\n\n try {\n $response = $client->get('https://api.pexels.com/v1/search?query=Google&per_page=1', [\n 'headers' => [\n 'Authorization' => $apiKey,\n ],\n ]);\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n\n public function pexelsapiSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting(['pexels_api_key' => $request->pexels_api_key])->save();\n }\n\n return response()->json([], 200);\n }\n\n public function pixabayapi(Request $request)\n {\n return view('panel.admin.settings.pixabay');\n }\n\n public function pixabayapiTest()\n {\n $client = new Client;\n $api = setting('pixabay_api_key');\n if ($api == '') {\n echo 'You must provide Pixabay API Key.';\n\n return;\n }\n\n $apiKey = $api;\n $client = new Client;\n\n try {\n $response = $client->get(\"https://pixabay.com/api/?key=$apiKey&q=Google\");\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n\n public function pixabayapiSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting(['pixabay_api_key' => $request->pixabay_api_key])->save();\n }\n\n return response()->json([], 200);\n }\n\n public function serperapi(Request $request)\n {\n return view('panel.admin.settings.serperapi');\n }\n\n public function perplexity(Request $request)\n {\n return view('panel.admin.settings.perplexity');\n }\n\n public function serperapiSave(Request $request)\n {\n $settings = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->serper_api_key = $request->serper_api_key;\n $settings->save();\n\n if ($request->hasAny(['serper_seo_tool_improve', 'serper_seo_aw_anlyze', 'seo_ai_tool', 'serper_seo_aw_improve', 'serper_seo_aw_sq', 'serper_seo_aw_keyword', 'serper_seo_blog_title_desc', 'serper_seo_site_meta'])) {\n setting([\n 'serper_seo_aw_sq' => $request->serper_seo_aw_sq,\n 'serper_seo_aw_keyword' => $request->serper_seo_aw_keyword,\n 'serper_seo_blog_title_desc' => $request->serper_seo_blog_title_desc,\n 'serper_seo_site_meta' => $request->serper_seo_site_meta,\n 'serper_seo_aw_anlyze' => $request->serper_seo_aw_anlyze,\n 'serper_seo_aw_improve' => $request->serper_seo_aw_improve,\n 'seo_ai_tool' => $request->seo_ai_tool,\n 'serper_seo_tool_improve' => $request->serper_seo_tool_improve,\n ])->save();\n }\n }\n\n return response()->json([], 200);\n }\n\n public function perplexitySave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting([\n 'perplexity_key' => $request->perplexity_key,\n ])->save();\n }\n\n return back()->with(['message' => __('Updated Successfully'), 'type' => 'success']);\n }\n\n public function serperapiTest()\n {\n try {\n $settings = SettingTwo::getCache();\n if ($settings->serper_api_key == '') {\n echo 'You must provide Serper API Key.';\n\n return;\n }\n $client = new Client;\n $response = $client->post('https://google.serper.dev/search', [\n 'headers' => [\n 'X-API-KEY' => $settings->serper_api_key,\n 'Content-Type' => 'application/json',\n ],\n 'json' => [\n 'q' => 'Coffee',\n ],\n ]);\n $responseData = json_decode($response->getBody(), true);\n echo ' <br>' . $settings->serper_api_key . ' - SUCCESS <br><hr> Example about \"Coffee\": <br>' . $responseData['organic'][0]['snippet'] . '<br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $settings->serper_api_key . ' -FAILED <br>';\n }\n }\n\n public function xAiTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n $settings = Setting::getCache();\n $apiKeys = ApiHelper::setXAiKey($settings, true);\n foreach ($apiKeys as $apiKey) {\n try {\n $history[] = ['role' => 'system', 'content' => 'Your name is Grok AI and you are a helpful assistant.'];\n $history[] = ['role' => 'user', 'content' => 'What is your name?'];\n $cli = OpenAI::factory()->withBaseUri('https://api.x.ai/v1')\n ->withHttpHeader('Authorization', 'Bearer ' . $apiKey)\n ->withHttpHeader('Content-Type', 'application/json')\n ->withApiKey($apiKey)\n ->make();\n\n $c = $cli->chat()->create(\n [\n 'messages' => $history,\n 'model' => EntityEnum::GROK_2_1212->value,\n 'stream' => false,\n 'temperature' => 0,\n ]\n );\n echo '<hr>' . $c['choices'][0]['message']['content'];\n echo '<br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception|Throwable $e) {\n echo __('Something went wrong. Please check your API key or Credit balance.') . ' <br> ' . $apiKey . ' -FAILED <br>';\n }\n }\n }\n\n public function openaiTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n $settings = Setting::getCache();\n $apiKeys = ApiHelper::setOpenAiKey($settings, true);\n foreach ($apiKeys as $apiKey) {\n\n $client = new Client([\n 'base_uri' => 'https://api.openai.com/v1/',\n 'headers' => [\n 'Authorization' => 'Bearer ' . $apiKey,\n 'Content-Type' => 'application/json',\n ],\n ]);\n\n try {\n\n $response = $client->post('chat/completions', [\n 'json' => [\n 'model' => EntityEnum::GPT_3_5_TURBO->value,\n 'messages' => [['role' => 'user', 'content' => 'Say this is a test!']],\n 'temperature' => 0.7,\n ],\n ]);\n\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n }\n\n public function stablediffusionTest(): void\n {\n $settings = SettingTwo::getCache();\n if ($settings->stable_diffusion_api_key === '') {\n echo 'You must provide Stable Difussion API key.';\n\n return;\n }\n\n $apiKeys = explode(',', $settings->stable_diffusion_api_key);\n\n foreach ($apiKeys as $apiKey) {\n\n $client = new Client([\n 'base_uri' => 'https://api.stability.ai/v2beta/stable-image/generate/',\n 'headers' => [\n 'Content-Type' => 'application/json',\n 'Authorization' => 'Bearer ' . $apiKey,\n 'Accept' => 'application/json',\n ],\n ]);\n $sd3Payload = [\n [\n 'name' => 'prompt',\n 'contents' => 'cat',\n ],\n [\n 'name' => 'file',\n 'contents' => 'no',\n ],\n [\n 'name' => 'output_format',\n 'contents' => 'png',\n ],\n [\n 'name' => 'model',\n 'contents' => 'sd3',\n ],\n ];\n\n try {\n $response = $client->post('sd3', [\n 'headers' => ['accept' => 'application/json'],\n 'multipart' => $sd3Payload,\n ]);\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n if ($e->hasResponse()) {\n try {\n $responseBody = $e->getResponse()->getBody()->getContents();\n $errorData = json_decode($responseBody, true);\n $errorMessage = $errorData['message'] ?? ($errorData['errors'][0] ?? 'Unknown error');\n\n echo $errorMessage . ' - ' . $apiKey . ' -FAILED <br>';\n } catch (JsonException $jsonException) {\n echo 'Failed to decode error response.' . ' - ' . $apiKey . ' -FAILED <br>';\n }\n } else {\n echo 'An unexpected error occurred: ' . $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n }\n }\n\n public function xAiSave(Request $request): JsonResponse\n {\n if (Helper::appIsNotDemo()) {\n setting([\n 'xai_api_secret' => $request->xai_api_secret,\n 'xai_default_model' => $request->xai_default_model,\n ])->save();\n }\n\n return response()->json([], 200);\n }\n\n public function openaiSave(Request $request): JsonResponse\n {\n $settings = Setting::getCache();\n $settings_two = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->openai_api_secret = $request->openai_api_secret;\n $settings->openai_default_model = $request->openai_default_model;\n $settings->openai_default_language = $request->openai_default_language;\n $settings->openai_default_tone_of_voice = $request->openai_default_tone_of_voice;\n $settings->openai_default_creativity = $request->openai_default_creativity;\n $settings->openai_max_input_length = $request->openai_max_input_length;\n $settings->openai_max_output_length = $request->openai_max_output_length;\n $settings_two->dalle = $request->dalle_default_model;\n $settings_two->openai_default_stream_server = $request->openai_default_stream_server;\n $settings->save();\n $settings_two->save();\n setting(key: [\n 'hide_creativity_option' => $request->hide_creativity_option,\n 'hide_tone_of_voice_option' => $request->hide_tone_of_voice_option,\n 'hide_output_length_option' => $request->hide_output_length_option,\n 'dalle_hidden' => $request->dalle_hidden,\n 'realtime_voice_chat' => $request->realtime_voice_chat,\n 'openai_file_search' => $request->openai_file_search,\n 'enabled_gpt_image_1'\t\t => $request->enabled_gpt_image_1,\n ])->save();\n\n if (MarketplaceHelper::isRegistered('chatbot')) {\n \\App\\Extensions\\Chatbot\\System\\Models\\Chatbot::query()->update([\n 'ai_model' => $request->openai_default_model,\n ]);\n }\n }\n app(MenuService::class)->regenerate();\n\n return response()->json([], 200);\n }\n\n public function affiliateStatusSave($id, Request $request): JsonResponse\n {\n if (Helper::appIsNotDemo()) {\n $user = User::find($id);\n if ($user) {\n $user->affiliate_status = $request->input('affiliate_status');\n $user->save();\n }\n\n app(MenuService::class)->regenerate();\n }\n\n return response()->json([], 200);\n }\n\n public function stablediffusionSave(Request $request): JsonResponse\n {\n $settings = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->stable_diffusion_api_key = $request->stable_diffusion_api_key;\n $settings->stablediffusion_default_language = $request->stablediffusion_default_language;\n $settings->stablediffusion_default_model = $request->stablediffusion_default_model;\n\n if ($request->has('stablediffusion_bedrock_model')) {\n $settings->stablediffusion_bedrock_model = $request->stablediffusion_bedrock_model;\n }\n\n $settings->save();\n\n setting([\n 'stable_hidden' => $request->stable_hidden,\n ])->save();\n }\n\n return response()->json([], 200);\n }\n\n // thumbnail\n public function thumbnail()\n {\n return view('panel.admin.settings.thumbnail');\n }\n\n // thumbnailSave\n public function thumbnailSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting(['image_thumbnail' => $request->image_thumbnail])->save();\n }\n\n return response()->json([], 200);\n }\n\n // thumbnailPurge\n public function thumbnailPurge()\n {\n if (Helper::appIsNotDemo()) {\n PurgeThumbImages();\n }\n\n return response()->json([], 200);\n }\n\n public function tts()\n {\n return view('panel.admin.settings.tts');\n }\n\n public function aimlapi(): View\n {\n return view('panel.admin.settings.aimlapi');\n }\n\n public function aimlapiSave(Request $request): JsonResponse\n {\n $settings = Setting::getCache();\n\n if (Helper::appIsNotDemo()) {\n $settings->update([\n 'aimlapi_key' => $request->aimlapi_key,\n 'ai_music_model' => $request->ai_music_model,\n ]);\n }\n\n return response()->json([], 200);\n }\n\n public function ttsSave(Request $request)\n {\n $settings = Setting::getCache();\n $settings_two = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->gcs_file = $request->gcs_file;\n $settings->gcs_name = $request->gcs_name;\n\n if ($settings_two->elevenlabs_api_key != $request->elevenlabs_api_key) {\n $settings_two->elevenlabs_api_key = $request->elevenlabs_api_key;\n if (MarketplaceHelper::isRegistered('chatbot-voice')) {\n ExtVoiceChatbot::query()->delete();\n }\n }\n\n $settings_two->feature_tts_google = $request->feature_tts_google;\n $settings_two->feature_tts_openai = $request->feature_tts_openai;\n $settings_two->feature_tts_elevenlabs = $request->feature_tts_elevenlabs;\n\n if ($request->hasAny(['feature_tts_azure', 'azure_api_key', 'azure_region'])) {\n setting([\n 'feature_tts_azure' => $request->get('feature_tts_azure'),\n 'azure_api_key' => $request->get('azure_api_key'),\n 'azure_region' => $request->get('azure_region'),\n ])->save();\n }\n\n if ($request->hasAny(['speechify_api_key', 'feature_tts_speechify'])) {\n setting([\n 'feature_tts_speechify' => $request->get('feature_tts_speechify'),\n 'speechify_api_key' => $request->get('speechify_api_key'),\n ])->save();\n }\n\n $settings->save();\n $settings_two->save();\n }\n\n return response()->json([], 200);\n }\n\n public function payment()\n {\n return view('panel.admin.settings.stripe');\n }\n\n public function paymentSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n $settings = Setting::getCache();\n $settings->default_currency = $request->default_currency;\n $settings->stripe_active = 1;\n $settings->stripe_key = $request->stripe_key;\n $settings->stripe_secret = $request->stripe_secret;\n $settings->stripe_base_url = $request->stripe_base_url;\n $settings->save();\n }\n\n return response()->json([], 200);\n }\n\n public function privacy()\n {\n return view('panel.admin.settings.privacy');\n }\n\n public function privacySave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n\n $settings_two = SettingTwo::getCache();\n $settings = Setting::getCache();\n\n $termsLocal = $request->termsLocal;\n $privacyLocal = $request->privacyLocal;\n\n if ($termsLocal == $settings_two->languages_default) {\n $settings->terms_content = $request->terms_content;\n } else {\n $terms = PrivacyTerms::where('type', 'terms')->where('lang', $termsLocal)->first();\n if ($terms) {\n $terms->content = $request->terms_content;\n $terms->save();\n } else {\n $newTerms = new PrivacyTerms;\n $newTerms->type = 'terms';\n $newTerms->lang = $termsLocal;\n $newTerms->content = $request->terms_content;\n $newTerms->save();\n }\n }\n\n if ($privacyLocal == $settings_two->languages_default) {\n $settings->privacy_content = $request->privacy_content;\n } else {\n $privacy = PrivacyTerms::where('type', 'privacy')->where('lang', $privacyLocal)->first();\n if ($privacy) {\n $privacy->content = $request->privacy_content;\n $privacy->save();\n } else {\n $newPrivacy = new PrivacyTerms;\n $newPrivacy->type = 'privacy';\n $newPrivacy->lang = $privacyLocal;\n $newPrivacy->content = $request->privacy_content;\n $newPrivacy->save();\n }\n }\n\n $settings->privacy_enable = $request->privacy_enable;\n $settings->privacy_enable_login = $request->privacy_enable_login;\n $settings->save();\n\n }\n\n return response()->json([], 200);\n }\n\n public function getPrivacyTermsContent(Request $request)\n {\n $type = $request->input('type');\n $language = $request->input('lang');\n $settings_two = SettingTwo::getCache();\n\n if ($settings_two->languages_default == $language) {\n\n $settings = Setting::getCache();\n $content = [\n 'type' => $type,\n 'lang' => $language,\n 'content' => $type == 'terms' ? $settings->terms_content : $settings->privacy_content,\n ];\n\n } else {\n $privacy_terms = PrivacyTerms::where('type', $type)->where('lang', $language)->first();\n $content = [\n 'type' => $privacy_terms?->type ?? $type,\n 'lang' => $privacy_terms?->lang,\n 'content' => $privacy_terms?->content,\n ];\n }\n\n return response()->json($content);\n }\n\n public function getMetaContent(Request $request)\n {\n $type = $request->input('type');\n $language = $request->input('lang');\n $settings_two = SettingTwo::getCache();\n\n if ($settings_two->languages_default == $language) {\n\n $settings = Setting::getCache();\n $content = [\n 'type' => $type,\n 'lang' => $language,\n 'content' => $type == 'meta_title' ? $settings->meta_title : $settings->meta_description,\n ];\n\n } else {\n $meta = PrivacyTerms::where('type', $type)->where('lang', $language)->first();\n $content = [\n 'type' => $meta?->type ?? $type,\n 'lang' => $meta?->lang,\n 'content' => $meta?->content,\n ];\n }\n\n return response()->json($content);\n }\n}\n"}, "4152bbe6d68c8f6d01c49e2cf339d1f44c0666ab": {"t": 1785756279.9215212, "n": 40621, "h": "2a820d33e439ddcc", "c": "<?php\n\nnamespace App\\Http\\Controllers\\Dashboard;\n\nuse App\\Domains\\Engine\\Enums\\EngineEnum;\nuse App\\Domains\\Entity\\Enums\\EntityEnum;\nuse App\\Extensions\\ChatbotVoice\\System\\Models\\ExtVoiceChatbot;\nuse App\\Helpers\\Classes\\ApiHelper;\nuse App\\Helpers\\Classes\\Helper;\nuse App\\Helpers\\Classes\\MarketplaceHelper;\nuse App\\Http\\Controllers\\Controller;\nuse App\\Http\\Requests\\Admin\\Settings\\GeneralSettingsRequest;\nuse App\\Models\\Extension;\nuse App\\Models\\OpenAIGenerator;\nuse App\\Models\\PrivacyTerms;\nuse App\\Models\\Setting;\nuse App\\Models\\SettingTwo;\nuse App\\Models\\User;\nuse App\\Services\\Common\\MenuService;\nuse Exception;\nuse GuzzleHttp\\Client;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Facades\\Http;\nuse Illuminate\\Support\\Str;\nuse Illuminate\\View\\View;\nuse JsonException;\nuse OpenAI;\nuse Throwable;\n\nclass SettingsController extends Controller\n{\n public function general()\n {\n return view('panel.admin.settings.general', [\n 'chatSetting' => Extension::query()\n ->where('slug', 'chat-setting')\n ->where('installed', true)\n ->exists(),\n ]);\n }\n\n public function generalSave(GeneralSettingsRequest $request): JsonResponse\n {\n if (Helper::appIsNotDemo()) {\n $settings = Setting::getCache();\n $settings_two = SettingTwo::getCache();\n\n $metaTitleLocal = $request->metaTitleLocal;\n $metaDescLocal = $request->metaDescLocal;\n\n if ($metaTitleLocal === $settings_two->languages_default) {\n $settings->meta_title = $request->meta_title;\n } else {\n $meta_title = PrivacyTerms::where('type', 'meta_title')->where('lang', $metaTitleLocal)->first();\n if ($meta_title) {\n $meta_title->content = $request->meta_title;\n $meta_title->save();\n } else {\n $new_meta_title = new PrivacyTerms;\n $new_meta_title->type = 'meta_title';\n $new_meta_title->lang = $metaTitleLocal;\n $new_meta_title->content = $request->meta_title;\n $new_meta_title->save();\n }\n }\n\n if ($metaDescLocal === $settings_two->languages_default) {\n $settings->meta_description = $request->meta_description;\n } else {\n $meta_description = PrivacyTerms::where('type', 'meta_desc')->where('lang', $metaDescLocal)->first();\n if ($meta_description) {\n $meta_description->content = $request->meta_description;\n $meta_description->save();\n } else {\n $new_meta_description = new PrivacyTerms;\n $new_meta_description->type = 'meta_desc';\n $new_meta_description->lang = $metaDescLocal;\n $new_meta_description->content = $request->meta_description;\n $new_meta_description->save();\n }\n }\n\n $inputs = [];\n $fields = [\n 'chat_setting_for_customer',\n 'default_ai_engine',\n 'default_aw_image_engine',\n 'photo_studio',\n ];\n foreach ($fields as $field) {\n if ($request->has($field)) {\n $inputs[$field] = $request->$field;\n }\n }\n if (! empty($inputs)) {\n setting($inputs)->save();\n }\n\n $settings->site_name = $request->site_name;\n $settings->site_url = $request->site_url;\n $settings->site_email = $request->site_email;\n $settings->default_country = $request->default_country;\n $settings->default_currency = $request->default_currency;\n $settings->register_active = $request->register_active;\n $settings->login_with_otp = $request->login_with_otp;\n $settings->tour_seen = $request->tour_seen;\n $settings->google_analytics_code = $request->google_analytics_code;\n $settings->meta_keywords = $request->meta_keywords;\n $settings->dashboard_code_before_head = $request->dashboard_code_before_head;\n $settings->dashboard_code_before_body = $request->dashboard_code_before_body;\n $settings->feature_ai_writer = $request->feature_ai_writer;\n $settings->feature_ai_rewriter = $request->feature_ai_rewriter;\n $settings->feature_ai_chat_image = $request->feature_ai_chat_image;\n $settings->feature_ai_image = $request->feature_ai_image;\n $settings_two->feature_ai_video = $request->feature_ai_video;\n $settings->feature_ai_chat = $request->feature_ai_chat;\n $settings->feature_ai_code = $request->feature_ai_code;\n $settings->feature_ai_speech_to_text = $request->feature_ai_speech_to_text;\n $settings->feature_ai_voiceover = $request->feature_ai_voiceover;\n $settings->feature_affilates = $request->feature_affilates;\n $settings->user_api_option = $request->user_api_option;\n $settings->feature_ai_article_wizard = $request->feature_ai_article_wizard;\n $settings->feature_ai_vision = $request->feature_ai_vision;\n $settings->feature_ai_pdf = $request->feature_ai_pdf;\n $settings->feature_ai_youtube = $request->feature_ai_youtube;\n $settings->feature_ai_rss = $request->feature_ai_rss;\n $settings->feature_ai_voice_clone = (bool) $request->feature_ai_voice_clone;\n $settings->team_functionality = $request->team_functionality;\n $settings->feature_ai_advanced_editor = $request->feature_ai_advanced_editor;\n $settings->login_without_confirmation = $request->login_without_confirmation;\n $settings->facebook_active = $request->facebook_active ?? 0;\n $settings->google_active = $request->google_active ?? 0;\n $settings->github_active = $request->github_active ?? 0;\n $settings->mobile_payment_active = $request->mobile_payment_active ?? 0;\n $settings->recaptcha_login = $request->recaptcha_login;\n $settings->recaptcha_register = $request->recaptcha_register;\n $settings->recaptcha_sitekey = $request->recaptcha_sitekey;\n $settings->recaptcha_secretkey = $request->recaptcha_secretkey;\n $settings->mrrobot_name = $request->mrrobot_name;\n $settings->mrrobot_search_words = $request->mrrobot_search_words;\n $settings->save();\n\n setting(\n [\n 'notification_active' => $request->notification_active,\n 'pusher_app_id' => $request->pusher_app_id,\n 'pusher_app_key' => $request->pusher_app_key,\n 'pusher_app_secret' => $request->pusher_app_secret,\n 'pusher_app_cluster' => $request->pusher_app_cluster,\n 'user_prompt_library' => $request->user_prompt_library,\n 'user_ai_image_prompt_library' => $request->user_ai_image_prompt_library,\n 'ai_voice_isolator' => $request->ai_voice_isolator,\n 'user_ai_writer_custom_templates' => $request->user_ai_writer_custom_templates,\n 'select_model_option' => $request->select_model_option,\n 'freeCreditsUponRegistration' => $request->entities,\n 'onetime_commission' => $request->onetime_commission,\n ]\n )->save();\n\n $this->toggleOpenaiTemplateStatus($settings);\n\n $settings_two->daily_limit_enabled = $request->limit;\n $settings_two->allowed_images_count = $request->daily_limit_count;\n $settings_two->openai_default_stream_server = $request->openai_default_stream_server;\n $settings_two->daily_voice_limit_enabled = $request->voice_limit;\n $settings_two->allowed_voice_count = $request->daily_voice_limit_count;\n\n $settings_two->save();\n\n $logo_types = [\n 'logo' => '',\n 'logo_dark' => 'dark',\n 'logo_sticky' => 'sticky',\n 'logo_dashboard' => 'dashboard',\n 'logo_dashboard_dark' => 'dashboard-dark',\n 'logo_collapsed' => 'collapsed',\n 'logo_collapsed_dark' => 'collapsed-dark',\n // retina\n 'logo_2x' => '2x',\n 'logo_dark_2x' => 'dark-2x',\n 'logo_sticky_2x' => 'sticky-2x',\n 'logo_dashboard_2x' => 'dashboard-2x',\n 'logo_dashboard_dark_2x' => 'dashboard-dark-2x',\n 'logo_collapsed_2x' => 'collapsed-2x',\n 'logo_collapsed_dark_2x' => 'collapsed-dark-2x',\n ];\n\n foreach ($logo_types as $logo => $logo_prefix) {\n\n if ($request->hasFile($logo)) {\n $path = 'upload/images/logo/';\n $image = $request->file($logo);\n $image_name = Str::random(4) . '-' . $logo_prefix . '-' . Str::slug($settings->site_name) . '-logo.' . $image->getClientOriginalExtension();\n\n // Resim uzantı kontrolü\n $imageTypes = ['jpg', 'jpeg', 'png', 'svg', 'webp'];\n if (! in_array(Str::lower($image->getClientOriginalExtension()), $imageTypes)) {\n $data = [\n 'errors' => ['The file extension must be jpg, jpeg, png, webp or svg.'],\n ];\n\n return response()->json($data, 419);\n }\n\n $image->move($path, $image_name);\n\n $settings->{$logo . '_path'} = $path . $image_name;\n $settings->{$logo} = $image_name;\n $settings->save();\n }\n\n }\n\n if ($request->hasFile('favicon')) {\n $path = 'upload/images/favicon/';\n $image = $request->file('favicon');\n $image_name = Str::random(4) . '-' . Str::slug($settings->site_name) . '-favicon.' . $image->getClientOriginalExtension();\n\n // Resim uzantı kontrolü\n $imageTypes = ['jpg', 'jpeg', 'png', 'svg', 'webp'];\n if (! in_array(Str::lower($image->getClientOriginalExtension()), $imageTypes)) {\n $data = [\n 'errors' => ['The file extension must be jpg, jpeg, png, webp or svg.'],\n ];\n\n return response()->json($data, 419);\n }\n\n $image->move($path, $image_name);\n\n $settings->favicon_path = $path . $image_name;\n $settings->favicon = $image_name;\n $settings->save();\n }\n\n app(MenuService::class)->regenerate();\n }\n\n return response()->json([], 200);\n }\n\n public function toggleOpenaiTemplateStatus($settings)\n {\n $templates = [\n 'ai_article_wizard_generator' => $settings->feature_ai_article_wizard,\n 'ai_writer' => $settings->feature_ai_writer,\n 'ai_rewriter' => $settings->feature_ai_rewriter,\n 'ai_chat_image' => $settings->feature_ai_chat_image,\n 'ai_image_generator' => $settings->feature_ai_image,\n 'ai_code_generator' => $settings->feature_ai_code,\n 'ai_speech_to_text' => $settings->feature_ai_speech_to_text,\n 'ai_voiceover' => $settings->feature_ai_voiceover,\n 'ai_vision' => $settings->feature_ai_vision,\n 'ai_pdf' => $settings->feature_ai_pdf,\n 'ai_youtube' => $settings->feature_ai_youtube,\n 'ai_rss' => $settings->feature_ai_rss,\n ];\n\n foreach ($templates as $key => $status) {\n OpenAIGenerator::query()->where('slug', $key)->update(['active' => $status]);\n }\n }\n\n public function anthropic(Request $request)\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.anthropic');\n }\n\n public function deepseek(Request $request)\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.deepseek');\n }\n\n public function deepseekSave(Request $request)\n {\n $data = $request->validate([\n 'deepseek_api_secret' => 'required',\n 'deepseek_default_model' => 'required|string',\n 'deepseek_max_output_length' => 'required|string',\n ]);\n\n $data['deepseek_api_secret'] = implode(',', $data['deepseek_api_secret']);\n\n setting($data)->save();\n\n return redirect()->back()->with([\n 'type' => 'success',\n 'message' => __('setting saved successfully.'),\n ]);\n }\n\n public function deepseekTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n $token = ApiHelper::setDeepseekKey();\n\n $url = 'https://api.deepseek.com/models';\n\n $response = Http::withHeaders([\n 'Accept' => 'application/json',\n 'Authorization' => \"Bearer $token\",\n ])->get($url);\n\n // Yanıtı Kontrol Etme\n if ($response->successful()) {\n echo ' <br>' . $token . ' - SUCCESS <br>';\n } else {\n echo $response->json('error.message') . ' - ' . $token . ' -FAILED <br>';\n }\n }\n\n public function anthropicTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n $token = ApiHelper::setAnthropicKey();\n\n $request = Http::withHeaders([\n 'x-api-key' => $token,\n 'Content-Type' => 'application/json',\n 'Accept' => 'application/json',\n 'anthropic-version' => '2023-06-01',\n ])->post('https://api.anthropic.com/v1/messages', [\n 'model' => setting('anthropic_default_model'),\n 'max_tokens' => (int) setting('anthropic_max_output_length'),\n 'messages' => [\n [\n 'role' => 'user',\n 'content' => 'Hello, how are you?',\n ],\n ],\n ]);\n\n if ($request->ok()) {\n echo ' <br>' . $token . ' - SUCCESS <br>';\n } else {\n echo $request->json('error.message') . ' - ' . $token . ' -FAILED <br>';\n }\n }\n\n public function anthropicSave(Request $request)\n {\n $data = $request->validate([\n 'anthropic_api_secret' => 'required|string',\n 'anthropic_default_model' => 'required|string',\n 'anthropic_max_input_length' => 'required|string',\n 'anthropic_max_output_length' => 'required|string',\n 'anthropic_bedrock_model' => 'string',\n ]);\n\n setting($data)->save();\n\n return response()->json([], 200);\n }\n\n public function gemini(Request $request)\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.gemini');\n }\n\n public function geminiTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n $newhistory = [\n [\n 'role' => 'user',\n 'parts' => [\n [\n 'text' => 'who are u.',\n ],\n ],\n ],\n ];\n\n $randomToken = ApiHelper::setGeminiKey();\n $client = app(\\App\\Domains\\Engine\\Services\\GeminiService::class);\n $response = $client\n ->setHistory($newhistory)\n ->generateContent();\n if ($response->ok()) {\n echo ' <br>' . $randomToken . ' - SUCCESS <br>';\n } else {\n echo $response->json('error.message') . ' -FAILED <br>';\n }\n }\n\n public function geminiSave(Request $request)\n {\n $data = $request->validate([\n 'gemini_api_secret' => 'required|string',\n 'gemini_default_model' => 'required|string',\n 'gemini_max_input_length' => 'required|string',\n 'gemini_max_output_length' => 'required|string',\n ]);\n setting($data)->save();\n\n return response()->json([], 200);\n }\n\n public function xAI()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.x-ai');\n }\n\n public function openai()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n\n return view('panel.admin.settings.openai');\n }\n\n public function stablediffusion()\n {\n return view('panel.admin.settings.stablediffusion');\n }\n\n public function unsplashapi(Request $request)\n {\n return view('panel.admin.settings.unsplashapi');\n }\n\n public function unsplashapiTest()\n {\n $client = new Client;\n $settings = SettingTwo::getCache();\n if ($settings->unsplash_api_key == '') {\n echo 'You must provide ' . EngineEnum::UNSPLASH->label() . ' API Key.';\n\n return;\n }\n\n $apiKey = $settings->unsplash_api_key;\n\n $client = new Client;\n\n try {\n $response = $client->get(\"https://api.unsplash.com/search/photos?query=Google&count=1&client_id=$apiKey\");\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n\n public function unsplashapiSave(Request $request)\n {\n $settings = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->unsplash_api_key = $request->unsplash_api_key;\n $settings->save();\n }\n\n return response()->json([], 200);\n }\n\n public function pexelsapi(Request $request)\n {\n return view('panel.admin.settings.pexels');\n }\n\n public function pexelsapiTest()\n {\n $client = new Client;\n $api = setting('pexels_api_key');\n if ($api == '') {\n echo 'You must provide Pexels API Key.';\n\n return;\n }\n\n $apiKey = $api;\n\n $client = new Client;\n\n try {\n $response = $client->get('https://api.pexels.com/v1/search?query=Google&per_page=1', [\n 'headers' => [\n 'Authorization' => $apiKey,\n ],\n ]);\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n\n public function pexelsapiSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting(['pexels_api_key' => $request->pexels_api_key])->save();\n }\n\n return response()->json([], 200);\n }\n\n public function pixabayapi(Request $request)\n {\n return view('panel.admin.settings.pixabay');\n }\n\n public function pixabayapiTest()\n {\n $client = new Client;\n $api = setting('pixabay_api_key');\n if ($api == '') {\n echo 'You must provide Pixabay API Key.';\n\n return;\n }\n\n $apiKey = $api;\n $client = new Client;\n\n try {\n $response = $client->get(\"https://pixabay.com/api/?key=$apiKey&q=Google\");\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n\n public function pixabayapiSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting(['pixabay_api_key' => $request->pixabay_api_key])->save();\n }\n\n return response()->json([], 200);\n }\n\n public function serperapi(Request $request)\n {\n return view('panel.admin.settings.serperapi');\n }\n\n public function perplexity(Request $request)\n {\n return view('panel.admin.settings.perplexity');\n }\n\n public function serperapiSave(Request $request)\n {\n $settings = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->serper_api_key = $request->serper_api_key;\n $settings->save();\n\n if ($request->hasAny(['serper_seo_tool_improve', 'serper_seo_aw_anlyze', 'seo_ai_tool', 'serper_seo_aw_improve', 'serper_seo_aw_sq', 'serper_seo_aw_keyword', 'serper_seo_blog_title_desc', 'serper_seo_site_meta'])) {\n setting([\n 'serper_seo_aw_sq' => $request->serper_seo_aw_sq,\n 'serper_seo_aw_keyword' => $request->serper_seo_aw_keyword,\n 'serper_seo_blog_title_desc' => $request->serper_seo_blog_title_desc,\n 'serper_seo_site_meta' => $request->serper_seo_site_meta,\n 'serper_seo_aw_anlyze' => $request->serper_seo_aw_anlyze,\n 'serper_seo_aw_improve' => $request->serper_seo_aw_improve,\n 'seo_ai_tool' => $request->seo_ai_tool,\n 'serper_seo_tool_improve' => $request->serper_seo_tool_improve,\n ])->save();\n }\n }\n\n return response()->json([], 200);\n }\n\n public function perplexitySave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting([\n 'perplexity_key' => $request->perplexity_key,\n ])->save();\n }\n\n return back()->with(['message' => __('Updated Successfully'), 'type' => 'success']);\n }\n\n public function serperapiTest()\n {\n try {\n $settings = SettingTwo::getCache();\n if ($settings->serper_api_key == '') {\n echo 'You must provide Serper API Key.';\n\n return;\n }\n $client = new Client;\n $response = $client->post('https://google.serper.dev/search', [\n 'headers' => [\n 'X-API-KEY' => $settings->serper_api_key,\n 'Content-Type' => 'application/json',\n ],\n 'json' => [\n 'q' => 'Coffee',\n ],\n ]);\n $responseData = json_decode($response->getBody(), true);\n echo ' <br>' . $settings->serper_api_key . ' - SUCCESS <br><hr> Example about \"Coffee\": <br>' . $responseData['organic'][0]['snippet'] . '<br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $settings->serper_api_key . ' -FAILED <br>';\n }\n }\n\n public function xAiTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n $settings = Setting::getCache();\n $apiKeys = ApiHelper::setXAiKey($settings, true);\n foreach ($apiKeys as $apiKey) {\n try {\n $history[] = ['role' => 'system', 'content' => 'Your name is Grok AI and you are a helpful assistant.'];\n $history[] = ['role' => 'user', 'content' => 'What is your name?'];\n $cli = OpenAI::factory()->withBaseUri('https://api.x.ai/v1')\n ->withHttpHeader('Authorization', 'Bearer ' . $apiKey)\n ->withHttpHeader('Content-Type', 'application/json')\n ->withApiKey($apiKey)\n ->make();\n\n $c = $cli->chat()->create(\n [\n 'messages' => $history,\n 'model' => EntityEnum::GROK_2_1212->value,\n 'stream' => false,\n 'temperature' => 0,\n ]\n );\n echo '<hr>' . $c['choices'][0]['message']['content'];\n echo '<br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception|Throwable $e) {\n echo __('Something went wrong. Please check your API key or Credit balance.') . ' <br> ' . $apiKey . ' -FAILED <br>';\n }\n }\n }\n\n public function openaiTest()\n {\n if (Helper::appIsDemo()) {\n return to_route('dashboard.user.index')->with([\n 'status' => 'error',\n 'message' => trans('This feature is disabled in demo mode.'),\n ]);\n }\n $settings = Setting::getCache();\n $apiKeys = ApiHelper::setOpenAiKey($settings, true);\n foreach ($apiKeys as $apiKey) {\n\n $client = new Client([\n 'base_uri' => 'https://api.openai.com/v1/',\n 'headers' => [\n 'Authorization' => 'Bearer ' . $apiKey,\n 'Content-Type' => 'application/json',\n ],\n ]);\n\n try {\n\n $response = $client->post('chat/completions', [\n 'json' => [\n 'model' => EntityEnum::GPT_3_5_TURBO->value,\n 'messages' => [['role' => 'user', 'content' => 'Say this is a test!']],\n 'temperature' => 0.7,\n ],\n ]);\n\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n }\n\n public function stablediffusionTest(): void\n {\n $settings = SettingTwo::getCache();\n if ($settings->stable_diffusion_api_key === '') {\n echo 'You must provide Stable Difussion API key.';\n\n return;\n }\n\n $apiKeys = explode(',', $settings->stable_diffusion_api_key);\n\n foreach ($apiKeys as $apiKey) {\n\n $client = new Client([\n 'base_uri' => 'https://api.stability.ai/v2beta/stable-image/generate/',\n 'headers' => [\n 'Content-Type' => 'application/json',\n 'Authorization' => 'Bearer ' . $apiKey,\n 'Accept' => 'application/json',\n ],\n ]);\n $sd3Payload = [\n [\n 'name' => 'prompt',\n 'contents' => 'cat',\n ],\n [\n 'name' => 'file',\n 'contents' => 'no',\n ],\n [\n 'name' => 'output_format',\n 'contents' => 'png',\n ],\n [\n 'name' => 'model',\n 'contents' => 'sd3',\n ],\n ];\n\n try {\n $response = $client->post('sd3', [\n 'headers' => ['accept' => 'application/json'],\n 'multipart' => $sd3Payload,\n ]);\n echo ' <br>' . $apiKey . ' - SUCCESS <br>';\n } catch (Exception $e) {\n if ($e->hasResponse()) {\n try {\n $responseBody = $e->getResponse()->getBody()->getContents();\n $errorData = json_decode($responseBody, true);\n $errorMessage = $errorData['message'] ?? ($errorData['errors'][0] ?? 'Unknown error');\n\n echo $errorMessage . ' - ' . $apiKey . ' -FAILED <br>';\n } catch (JsonException $jsonException) {\n echo 'Failed to decode error response.' . ' - ' . $apiKey . ' -FAILED <br>';\n }\n } else {\n echo 'An unexpected error occurred: ' . $e->getMessage() . ' - ' . $apiKey . ' -FAILED <br>';\n }\n }\n }\n }\n\n public function xAiSave(Request $request): JsonResponse\n {\n if (Helper::appIsNotDemo()) {\n setting([\n 'xai_api_secret' => $request->xai_api_secret,\n 'xai_default_model' => $request->xai_default_model,\n ])->save();\n }\n\n return response()->json([], 200);\n }\n\n public function openaiSave(Request $request): JsonResponse\n {\n $settings = Setting::getCache();\n $settings_two = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->openai_api_secret = $request->openai_api_secret;\n $settings->openai_default_model = $request->openai_default_model;\n $settings->openai_default_language = $request->openai_default_language;\n $settings->openai_default_tone_of_voice = $request->openai_default_tone_of_voice;\n $settings->openai_default_creativity = $request->openai_default_creativity;\n $settings->openai_max_input_length = $request->openai_max_input_length;\n $settings->openai_max_output_length = $request->openai_max_output_length;\n $settings_two->dalle = $request->dalle_default_model;\n $settings_two->openai_default_stream_server = $request->openai_default_stream_server;\n $settings->save();\n $settings_two->save();\n setting(key: [\n 'hide_creativity_option' => $request->hide_creativity_option,\n 'hide_tone_of_voice_option' => $request->hide_tone_of_voice_option,\n 'hide_output_length_option' => $request->hide_output_length_option,\n 'dalle_hidden' => $request->dalle_hidden,\n 'realtime_voice_chat' => $request->realtime_voice_chat,\n 'openai_file_search' => $request->openai_file_search,\n 'enabled_gpt_image_1'\t\t => $request->enabled_gpt_image_1,\n ])->save();\n\n if (MarketplaceHelper::isRegistered('chatbot')) {\n \\App\\Extensions\\Chatbot\\System\\Models\\Chatbot::query()->update([\n 'ai_model' => $request->openai_default_model,\n ]);\n }\n }\n app(MenuService::class)->regenerate();\n\n return response()->json([], 200);\n }\n\n public function affiliateStatusSave($id, Request $request): JsonResponse\n {\n if (Helper::appIsNotDemo()) {\n $user = User::find($id);\n if ($user) {\n $user->affiliate_status = $request->input('affiliate_status');\n $user->save();\n }\n\n app(MenuService::class)->regenerate();\n }\n\n return response()->json([], 200);\n }\n\n public function stablediffusionSave(Request $request): JsonResponse\n {\n $settings = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->stable_diffusion_api_key = $request->stable_diffusion_api_key;\n $settings->stablediffusion_default_language = $request->stablediffusion_default_language;\n $settings->stablediffusion_default_model = $request->stablediffusion_default_model;\n\n if ($request->has('stablediffusion_bedrock_model')) {\n $settings->stablediffusion_bedrock_model = $request->stablediffusion_bedrock_model;\n }\n\n $settings->save();\n\n setting([\n 'stable_hidden' => $request->stable_hidden,\n ])->save();\n }\n\n return response()->json([], 200);\n }\n\n // thumbnail\n public function thumbnail()\n {\n return view('panel.admin.settings.thumbnail');\n }\n\n // thumbnailSave\n public function thumbnailSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n setting(['image_thumbnail' => $request->image_thumbnail])->save();\n }\n\n return response()->json([], 200);\n }\n\n // thumbnailPurge\n public function thumbnailPurge()\n {\n if (Helper::appIsNotDemo()) {\n PurgeThumbImages();\n }\n\n return response()->json([], 200);\n }\n\n public function tts()\n {\n return view('panel.admin.settings.tts');\n }\n\n public function aimlapi(): View\n {\n return view('panel.admin.settings.aimlapi');\n }\n\n public function aimlapiSave(Request $request): JsonResponse\n {\n $settings = Setting::getCache();\n\n if (Helper::appIsNotDemo()) {\n $settings->update([\n 'aimlapi_key' => $request->aimlapi_key,\n 'ai_music_model' => $request->ai_music_model,\n ]);\n }\n\n return response()->json([], 200);\n }\n\n public function ttsSave(Request $request)\n {\n $settings = Setting::getCache();\n $settings_two = SettingTwo::getCache();\n if (Helper::appIsNotDemo()) {\n $settings->gcs_file = $request->gcs_file;\n $settings->gcs_name = $request->gcs_name;\n\n if ($settings_two->elevenlabs_api_key != $request->elevenlabs_api_key) {\n $settings_two->elevenlabs_api_key = $request->elevenlabs_api_key;\n if (MarketplaceHelper::isRegistered('chatbot-voice')) {\n ExtVoiceChatbot::query()->delete();\n }\n }\n\n $settings_two->feature_tts_google = $request->feature_tts_google;\n $settings_two->feature_tts_openai = $request->feature_tts_openai;\n $settings_two->feature_tts_elevenlabs = $request->feature_tts_elevenlabs;\n\n if ($request->hasAny(['feature_tts_azure', 'azure_api_key', 'azure_region'])) {\n setting([\n 'feature_tts_azure' => $request->get('feature_tts_azure'),\n 'azure_api_key' => $request->get('azure_api_key'),\n 'azure_region' => $request->get('azure_region'),\n ])->save();\n }\n\n if ($request->hasAny(['speechify_api_key', 'feature_tts_speechify'])) {\n setting([\n 'feature_tts_speechify' => $request->get('feature_tts_speechify'),\n 'speechify_api_key' => $request->get('speechify_api_key'),\n ])->save();\n }\n\n $settings->save();\n $settings_two->save();\n }\n\n return response()->json([], 200);\n }\n\n public function payment()\n {\n return view('panel.admin.settings.stripe');\n }\n\n public function paymentSave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n $settings = Setting::getCache();\n $settings->default_currency = $request->default_currency;\n $settings->stripe_active = 1;\n $settings->stripe_key = $request->stripe_key;\n $settings->stripe_secret = $request->stripe_secret;\n $settings->stripe_base_url = $request->stripe_base_url;\n $settings->save();\n }\n\n return response()->json([], 200);\n }\n\n public function privacy()\n {\n return view('panel.admin.settings.privacy');\n }\n\n public function privacySave(Request $request)\n {\n if (Helper::appIsNotDemo()) {\n\n $settings_two = SettingTwo::getCache();\n $settings = Setting::getCache();\n\n $termsLocal = $request->termsLocal;\n $privacyLocal = $request->privacyLocal;\n\n if ($termsLocal == $settings_two->languages_default) {\n $settings->terms_content = $request->terms_content;\n } else {\n $terms = PrivacyTerms::where('type', 'terms')->where('lang', $termsLocal)->first();\n if ($terms) {\n $terms->content = $request->terms_content;\n $terms->save();\n } else {\n $newTerms = new PrivacyTerms;\n $newTerms->type = 'terms';\n $newTerms->lang = $termsLocal;\n $newTerms->content = $request->terms_content;\n $newTerms->save();\n }\n }\n\n if ($privacyLocal == $settings_two->languages_default) {\n $settings->privacy_content = $request->privacy_content;\n } else {\n $privacy = PrivacyTerms::where('type', 'privacy')->where('lang', $privacyLocal)->first();\n if ($privacy) {\n $privacy->content = $request->privacy_content;\n $privacy->save();\n } else {\n $newPrivacy = new PrivacyTerms;\n $newPrivacy->type = 'privacy';\n $newPrivacy->lang = $privacyLocal;\n $newPrivacy->content = $request->privacy_content;\n $newPrivacy->save();\n }\n }\n\n $settings->privacy_enable = $request->privacy_enable;\n $settings->privacy_enable_login = $request->privacy_enable_login;\n $settings->save();\n\n }\n\n return response()->json([], 200);\n }\n\n public function getPrivacyTermsContent(Request $request)\n {\n $type = $request->input('type');\n $language = $request->input('lang');\n $settings_two = SettingTwo::getCache();\n\n if ($settings_two->languages_default == $language) {\n\n $settings = Setting::getCache();\n $content = [\n 'type' => $type,\n 'lang' => $language,\n 'content' => $type == 'terms' ? $settings->terms_content : $settings->privacy_content,\n ];\n\n } else {\n $privacy_terms = PrivacyTerms::where('type', $type)->where('lang', $language)->first();\n $content = [\n 'type' => $privacy_terms?->type ?? $type,\n 'lang' => $privacy_terms?->lang,\n 'content' => $privacy_terms?->content,\n ];\n }\n\n return response()->json($content);\n }\n\n public function getMetaContent(Request $request)\n {\n $type = $request->input('type');\n $language = $request->input('lang');\n $settings_two = SettingTwo::getCache();\n\n if ($settings_two->languages_default == $language) {\n\n $settings = Setting::getCache();\n $content = [\n 'type' => $type,\n 'lang' => $language,\n 'content' => $type == 'meta_title' ? $settings->meta_title : $settings->meta_description,\n ];\n\n } else {\n $meta = PrivacyTerms::where('type', $type)->where('lang', $language)->first();\n $content = [\n 'type' => $meta?->type ?? $type,\n 'lang' => $meta?->lang,\n 'content' => $meta?->content,\n ];\n }\n\n return response()->json($content);\n }\n}\n"}}}}