aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/dbflow/CookiesDb.kt
blob: ab39118aa15aa54725380fe6c34e31c75306c84f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package com.pitchedapps.frost.dbflow

import com.raizlabs.android.dbflow.annotation.Database
import com.raizlabs.android.dbflow.annotation.ForeignKey
import com.raizlabs.android.dbflow.annotation.PrimaryKey
import com.raizlabs.android.dbflow.annotation.Table
import com.raizlabs.android.dbflow.structure.BaseModel
import okhttp3.Cookie
import java.io.Serializable

/**
 * Created by Allan Wang on 2017-05-30.
 */

@Database(name = CookiesDb.NAME, version = CookiesDb.VERSION)
object CookiesDb {
    const val NAME = "Cookies"
    const val VERSION = 1
}

//@Database(name = CookieDb.NAME, version = CookieDb.VERSION)
//object CookieDb {
//    const val NAME = "Cookie"
//    const val VERSION = 1
//}

@Table(database = CookiesDb::class, allFields = true)
data class CookieModel(@PrimaryKey var name: String,
                       var value: String,
                       var expiresAt: Long,
                       var domain: String,
                       var path: String,
                       var secure: Boolean,
                       var httpOnly: Boolean) {

    constructor(cookie: Cookie) : this(cookie.name(), cookie.value(), cookie.expiresAt(), cookie.domain(), cookie.path(), cookie.secure(), cookie.httpOnly())
    constructor() : this("", "", 0L, "", "", false, false)

    fun toCookie(): Cookie {
        val builder = Cookie.Builder().name(name).value(value).expiresAt(expiresAt).domain(domain).path(path)
        if (secure) builder.secure()
        if (httpOnly) builder.httpOnly()
        return builder.build()
    }

    fun isSecure() = secure
    fun isHttpOnly() = httpOnly
}

//class CookieList(val cookies: List<Cookie>)
//class CookieDbList(val cookies: List<CookieDb>)

//@com.raizlabs.android.dbflow.annotation.TypeConverter
//class CookieTypeConverter() : TypeConverter<CookieDbList, CookieList>() {
//    override fun getModelValue(data: CookieDbList): CookieList = CookieList(data.cookies.map { it.toCookie() })
//    override fun getDBValue(model: CookieList): CookieDbList = CookieDbList(model.cookies.map { CookieDb(it) })
//}

@Table(database = CookiesDb::class)
data class Cookies(@PrimaryKey var url: String = "", @ForeignKey var cookie: CookieModel = CookieModel()) : BaseModel(), Serializable