| | |
| | | import android.content.Context |
| | | import android.net.Uri |
| | | import android.util.Log |
| | | import android.webkit.CookieManager |
| | | import com.shsening.autouploadvideos.AppConfig |
| | | import org.json.JSONObject |
| | | |
| | | |
| | | |
| | | object CookieHelper { |
| | | private const val PREF_NAME = "CookieHelper" |
| | | |
| | | fun saveSessionProfileUrlCookies(context: Context, sessionProfileId: String, url: String, cookies: String) { |
| | | val sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) |
| | | val sessionCookiesMap = sharedPreferences.getString(sessionProfileId, "{}") |
| | | val sessionCookies = JSONObject(sessionCookiesMap!!) |
| | | sessionCookies.put(url, cookies) |
| | | sharedPreferences.edit().putString(sessionProfileId, sessionCookies.toString()).apply() |
| | | |
| | | |
| | | fun saveSessionProfileUrlCookies(context: Context, sessionProfileId: String, url: String) { |
| | | try{ |
| | | val cookies = CookieManager.getInstance().getCookie(url) |
| | | if (cookies != null) { |
| | | val sharedPreferences = context.getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) |
| | | val sessionCookiesMap = sharedPreferences.getString(sessionProfileId, "{}") |
| | | val sessionCookies = JSONObject(sessionCookiesMap!!) |
| | | sessionCookies.put(url, cookies) |
| | | sessionCookies.put(getBaseUrl(url), cookies) |
| | | sharedPreferences.edit().putString(sessionProfileId, sessionCookies.toString()).apply() |
| | | } |
| | | } catch (e: java.lang.Exception) { |
| | | Log.e("CookieHelper", "Failed to get cookies: ", e) |
| | | } |
| | | } |
| | | |
| | | fun getAllSessionProfileCookies(context: Context, sessionProfileId: String): Map<String, String> { |
| | |
| | | val sessionCookies = JSONObject(sessionCookiesMap!!) |
| | | return sessionCookies.keys().asSequence().associateWith { sessionCookies.getString(it) } |
| | | } |
| | | |
| | | fun removeCookiesForUrl(url: String) { |
| | | val cookieManager = CookieManager.getInstance() |
| | | val cookies = cookieManager.getCookie(url) // 获取特定 URL 的所有 Cookie |
| | | if (cookies != null) { |
| | | val cookieArray = cookies.split(";") // 按分号分隔多个 Cookie |
| | | for (cookie in cookieArray) { |
| | | val cookieParts = cookie.split("=") |
| | | if (cookieParts.size > 0) { |
| | | val cookieName = cookieParts[0].trim() |
| | | // 设置一个过期的 Cookie 覆盖原来的 |
| | | cookieManager.setCookie(url, "$cookieName=; Expires=Thu, 01 Jan 1970 00:00:00 GMT") |
| | | } |
| | | } |
| | | // 确保将更改同步到存储中 |
| | | cookieManager.flush() |
| | | } |
| | | private fun getBaseUrl(url: String): String { |
| | | val uri = Uri.parse(url) |
| | | return "${uri.scheme}://${uri.host}/" |
| | | } |
| | | |
| | | fun removeCookieForAllPlatform(){ |
| | | AppConfig.SESSION_PROFILE_PALTFORM_LISTS.forEach { item -> |
| | | removeCookiesForUrl(item.url) |
| | | } |
| | | } |
| | | |
| | | fun saveSessionCookies(context: Context,sessionProfileId:String) { |
| | | var cookieManager = CookieManager.getInstance() |
| | | AppConfig.SESSION_PROFILE_PALTFORM_LISTS.forEach { item -> |
| | | val cookies = cookieManager.getCookie(item.url) |
| | | if (cookies != null) { |
| | | saveSessionProfileUrlCookies( |
| | | context, |
| | | sessionProfileId, |
| | | item.url, |
| | | cookies |
| | | ) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |