132 lines
6.4 KiB
Kotlin
132 lines
6.4 KiB
Kotlin
package fr.mobdev.peertubelive.manager
|
|
|
|
import android.content.ContentValues
|
|
import android.content.Context
|
|
import android.database.Cursor
|
|
import fr.mobdev.peertubelive.objects.OAuthData
|
|
import fr.mobdev.peertubelive.objects.StreamSettings
|
|
|
|
object DatabaseManager {
|
|
private var databaseHelper: DatabaseHelper? = null
|
|
|
|
|
|
fun addNewCredentials(context: Context, oAuthData: OAuthData) {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
|
|
val values = ContentValues()
|
|
values.put(DatabaseHelper.CREDS_BASE_URL,oAuthData.baseUrl)
|
|
values.put(DatabaseHelper.CREDS_USERNAME,oAuthData.username)
|
|
values.put(DatabaseHelper.CREDS_CLIENT_ID,oAuthData.clientId)
|
|
values.put(DatabaseHelper.CREDS_CLIENT_SECRET,oAuthData.clientSecret)
|
|
values.put(DatabaseHelper.CREDS_ACCESS_TOKEN,oAuthData.accessToken)
|
|
values.put(DatabaseHelper.CREDS_TOKEN_TYPE,oAuthData.tokenType)
|
|
values.put(DatabaseHelper.CREDS_EXPIRES,oAuthData.expires)
|
|
values.put(DatabaseHelper.CREDS_REFRESH_TOKEN,oAuthData.refreshToken)
|
|
values.put(DatabaseHelper.CREDS_REFRESH_EXPIRES,oAuthData.refreshTokenExpires)
|
|
databaseHelper?.insert(DatabaseHelper.TABLE_CREDS,values)
|
|
|
|
}
|
|
|
|
fun updateCredentials(context: Context, oAuthData: OAuthData) {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
|
|
val values = ContentValues()
|
|
val whereClause = "${DatabaseHelper.CREDS_USERNAME} = ? AND ${DatabaseHelper.CREDS_BASE_URL} = ? AND ${DatabaseHelper.CREDS_CLIENT_SECRET} = ?"
|
|
val whereArgs = arrayOf(oAuthData.username , oAuthData.baseUrl , oAuthData.clientSecret)
|
|
values.put(DatabaseHelper.CREDS_ACCESS_TOKEN,oAuthData.accessToken)
|
|
values.put(DatabaseHelper.CREDS_TOKEN_TYPE,oAuthData.tokenType)
|
|
values.put(DatabaseHelper.CREDS_EXPIRES,oAuthData.expires)
|
|
values.put(DatabaseHelper.CREDS_REFRESH_TOKEN,oAuthData.refreshToken)
|
|
values.put(DatabaseHelper.CREDS_REFRESH_EXPIRES,oAuthData.refreshTokenExpires)
|
|
databaseHelper?.update(DatabaseHelper.TABLE_CREDS,values,whereClause,whereArgs)
|
|
}
|
|
|
|
fun getCredentials(context: Context): List<OAuthData> {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
val oAuthDatas: ArrayList<OAuthData> = ArrayList()
|
|
val cursor: Cursor? = databaseHelper?.query(DatabaseHelper.TABLE_CREDS,null,null,null)
|
|
while (cursor?.moveToNext() == true) {
|
|
var col = 1
|
|
val username: String = cursor.getString(col++)
|
|
val baseUrl: String = cursor.getString(col++)
|
|
val clientId: String = cursor.getString(col++)
|
|
val clientSecret: String = cursor.getString(col++)
|
|
val accessToken: String = cursor.getString(col++)
|
|
val tokenType: String = cursor.getString(col++)
|
|
val expires: Long = cursor.getLong(col++)
|
|
val refreshToken: String = cursor.getString(col++)
|
|
val refreshTokenExpires: Long = cursor.getLong(col)
|
|
var oAuthData = OAuthData(baseUrl,username,clientId,clientSecret,accessToken,tokenType,expires,refreshToken,refreshTokenExpires)
|
|
oAuthDatas.add(oAuthData)
|
|
|
|
}
|
|
cursor?.close()
|
|
return oAuthDatas
|
|
}
|
|
|
|
fun existsCredential(context: Context, url: String, username: String): Boolean {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
val columns = arrayOf(DatabaseHelper.CREDS_BASE_URL, DatabaseHelper.CREDS_USERNAME)
|
|
val whereClause = "${DatabaseHelper.CREDS_USERNAME} = ? AND ${DatabaseHelper.CREDS_BASE_URL} = ?"
|
|
val whereArgs = arrayOf(username, url)
|
|
val cursor: Cursor? = databaseHelper?.query(DatabaseHelper.TABLE_CREDS,columns,whereClause,whereArgs)
|
|
val exist = cursor?.count != 0
|
|
cursor?.close()
|
|
return exist
|
|
}
|
|
|
|
fun deleteAccount(context: Context, oAuthData: OAuthData) {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
val whereClause = "${DatabaseHelper.CREDS_USERNAME} = ? AND ${DatabaseHelper.CREDS_BASE_URL} = ? AND ${DatabaseHelper.CREDS_CLIENT_ID} = ?"
|
|
val whereArgs = arrayOf(oAuthData.username, oAuthData.baseUrl, oAuthData.clientId)
|
|
databaseHelper?.delete(DatabaseHelper.TABLE_CREDS,whereClause,whereArgs)
|
|
}
|
|
|
|
fun getStreamSettings(context: Context): StreamSettings? {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
|
|
val cursor: Cursor? = databaseHelper?.query(DatabaseHelper.TABLE_STREAM_SETTINGS,null,null,null)
|
|
var streamSettings: StreamSettings? = null
|
|
if(cursor?.moveToNext() == true) {
|
|
var col = 1
|
|
val title: String = cursor.getString(col++)
|
|
val category: Int = cursor.getInt(col++)
|
|
val privacy: Int = cursor.getInt(col++)
|
|
val language: String? = cursor.getString(col++)
|
|
val licence: Int = cursor.getInt(col++)
|
|
val comments: Boolean = cursor.getInt(col++) == 1
|
|
val download: Boolean = cursor.getInt(col++) == 1
|
|
val saveReplay: Boolean = cursor.getInt(col++) == 1
|
|
val nsfw: Boolean = cursor.getInt(col) == 1
|
|
streamSettings = StreamSettings(title,0,privacy,category,language,licence,null,comments,download,nsfw,saveReplay)
|
|
}
|
|
cursor?.close()
|
|
return streamSettings
|
|
}
|
|
|
|
fun updateStreamSettings(context: Context, streamSettings: StreamSettings) {
|
|
if (databaseHelper == null)
|
|
databaseHelper = DatabaseHelper(context)
|
|
val values = ContentValues()
|
|
values.put(DatabaseHelper.SETS_TITLE,streamSettings.title)
|
|
values.put(DatabaseHelper.SETS_PRIVACY,streamSettings.privacy)
|
|
values.put(DatabaseHelper.SETS_CATEGORY,streamSettings.category)
|
|
values.put(DatabaseHelper.SETS_COMMENTS,streamSettings.comments)
|
|
values.put(DatabaseHelper.SETS_DOWNLOAD,streamSettings.download)
|
|
values.put(DatabaseHelper.SETS_NSFW,streamSettings.nsfw)
|
|
values.put(DatabaseHelper.SETS_REPLAY,streamSettings.saveReplay)
|
|
values.put(DatabaseHelper.SETS_LANGUAGE,streamSettings.language)
|
|
values.put(DatabaseHelper.SETS_LICENCE,streamSettings.licence)
|
|
|
|
|
|
val whereClause = "id = ?"
|
|
val whereArgs: Array<String?> = arrayOf("1")
|
|
databaseHelper?.update(DatabaseHelper.TABLE_STREAM_SETTINGS,values,whereClause,whereArgs)
|
|
}
|
|
} |