{"repo": "ashleyrabbitt/aiside", "files": {"config/deepseek.php": {"69bc9fee3047629be62f349097b1e4d5b5efcadb": {"t": 1785745764.4162157, "n": 900, "h": "01d87353efb463d7", "c": " 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": " 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": " 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 '
' . $token . ' - SUCCESS
';\n } else {\n echo $response->json('error.message') . ' - ' . $token . ' -FAILED
';\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 '
' . $token . ' - SUCCESS
';\n } else {\n echo $request->json('error.message') . ' - ' . $token . ' -FAILED
';\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 '
' . $randomToken . ' - SUCCESS
';\n } else {\n echo $response->json('error.message') . ' -FAILED
';\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 '
' . $apiKey . ' - SUCCESS
';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED
';\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 '
' . $apiKey . ' - SUCCESS
';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED
';\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 '
' . $apiKey . ' - SUCCESS
';\n } catch (Exception $e) {\n echo $e->getMessage() . ' - ' . $apiKey . ' -FAILED
';\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 '
' . $settings->serper_api_key . ' - SUCCESS