Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6547664d authored by Nihar Thakkar's avatar Nihar Thakkar
Browse files

Implemented OAuth token support. Refreshing of tokens not working yet.

parent 6bdb6bfc
Loading
Loading
Loading
Loading
+32 −10
Original line number Diff line number Diff line
@@ -56,11 +56,22 @@ class DavAddressBook @JvmOverloads constructor(
        serializer.endTag(XmlUtils.NS_CARDDAV, "addressbook-query")
        serializer.endDocument()

        val response = httpClient.newCall(Request.Builder()
        var response: Response? = null
        if (accessToken.isNullOrEmpty()) {
            response = httpClient.newCall(Request.Builder()
                    .url(location)
                    .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                    .header("Depth", "1")
                    .build()).execute()
        }
        else {
            response = httpClient.newCall(Request.Builder()
                    .url(location)
                    .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                    .header("Depth", "1")
                    .header("Authorization", "Bearer $accessToken")
                    .build()).execute()
        }

        checkStatus(response, false)
        assertMultiStatus(response)
@@ -108,11 +119,22 @@ class DavAddressBook @JvmOverloads constructor(
        serializer.endTag(XmlUtils.NS_CARDDAV, "addressbook-multiget")
        serializer.endDocument()

        val response = httpClient.newCall(Request.Builder()
        var response: Response? = null
        if (accessToken.isNullOrEmpty()) {
            response = httpClient.newCall(Request.Builder()
                    .url(location)
                    .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                    .header("Depth", "0")       // "The request MUST include a Depth: 0 header [...]"
                    .build()).execute()
        }
        else {
            response = httpClient.newCall(Request.Builder()
                    .url(location)
                    .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                    .header("Depth", "0")       // "The request MUST include a Depth: 0 header [...]"
                    .header("Authorization", "Bearer $accessToken")
                    .build()).execute()
        }

        checkStatus(response, false)
        assertMultiStatus(response)
+30 −9
Original line number Diff line number Diff line
@@ -83,11 +83,22 @@ class DavCalendar @JvmOverloads constructor(
        serializer.endTag(XmlUtils.NS_CALDAV, "calendar-query")
        serializer.endDocument()

        val response = httpClient.newCall(Request.Builder()
        var response: Response? = null
            if (accessToken.isNullOrEmpty()) {
                response = httpClient.newCall(Request.Builder()
                        .url(location)
                        .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                        .header("Depth", "1")
                        .build()).execute()
            }
            else {
                response = httpClient.newCall(Request.Builder()
                        .url(location)
                        .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                        .header("Depth", "1")
                        .header("Authorization", "Bearer $accessToken")
                        .build()).execute()
            }

        checkStatus(response, false)
        assertMultiStatus(response)
@@ -130,10 +141,20 @@ class DavCalendar @JvmOverloads constructor(
        serializer.endTag(XmlUtils.NS_CALDAV, "calendar-multiget")
        serializer.endDocument()

        val response = httpClient.newCall(Request.Builder()
        var response: Response? = null
            if (accessToken.isNullOrEmpty()) {
                response = httpClient.newCall(Request.Builder()
                        .url(location)
                        .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                        .build()).execute()
            }
            else {
                response = httpClient.newCall(Request.Builder()
                        .url(location)
                        .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                        .header("Authorization", "Bearer $accessToken")
                        .build()).execute()
            }

        checkStatus(response, false)
        assertMultiStatus(response)
+17 −9
Original line number Diff line number Diff line
@@ -11,10 +11,7 @@ package at.bitfire.dav4android
import at.bitfire.dav4android.exception.DavException
import at.bitfire.dav4android.exception.HttpException
import at.bitfire.dav4android.property.SyncToken
import okhttp3.HttpUrl
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.*
import java.io.StringWriter
import java.util.logging.Logger

@@ -77,11 +74,22 @@ open class DavCollection @JvmOverloads constructor(
        serializer.endTag(XmlUtils.NS_WEBDAV, "sync-collection")
        serializer.endDocument()

        val response = httpClient.newCall(Request.Builder()
        var response: Response? = null
            if (accessToken.isNullOrEmpty()) {
                response = httpClient.newCall(Request.Builder()
                        .url(location)
                        .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                        .header("Depth", "0")
                        .build()).execute()
            }
            else {
                response = httpClient.newCall(Request.Builder()
                        .url(location)
                        .method("REPORT", RequestBody.create(MIME_XML, writer.toString()))
                        .header("Depth", "0")
                        .header("Authorization", "Bearer $accessToken")
                        .build()).execute()
            }

        checkStatus(response, false)
        assertMultiStatus(response)
+40 −10
Original line number Diff line number Diff line
@@ -124,10 +124,20 @@ open class DavResource @JvmOverloads constructor(

        var response: Response? = null
        for (attempt in 1..MAX_REDIRECTS) {
            if (accessToken.isNullOrEmpty()) {
                response = httpClient.newCall(Request.Builder()
                        .method("MKCOL", rqBody)
                        .url(location)
                        .build()).execute()
            }
            else {
                response = httpClient.newCall(Request.Builder()
                        .method("MKCOL", rqBody)
                        .url(location)
                        .header("Authorization", "Bearer $accessToken")
                        .build()).execute()
            }

            if (response.isRedirect)
                processRedirect(response)
            else
@@ -151,12 +161,24 @@ open class DavResource @JvmOverloads constructor(

        var response: Response? = null
        for (attempt in 1..MAX_REDIRECTS) {
            if (accessToken.isNullOrEmpty()) {
                response = httpClient.newCall(Request.Builder()
                        .get()
                        .url(location)
                        .header("Accept", accept)
                        .header("Accept-Encoding", "identity")    // disable compression because it can change the ETag
                        .build()).execute()
            }
            else {
                response = httpClient.newCall(Request.Builder()
                        .get()
                        .url(location)
                        .header("Accept", accept)
                        .header("Accept-Encoding", "identity")    // disable compression because it can change the ETag
                        .header("Authorization", "Bearer $accessToken")
                        .build()).execute()
            }

            if (response.isRedirect)
                processRedirect(response)
            else
@@ -206,6 +228,10 @@ open class DavResource @JvmOverloads constructor(
            // don't overwrite anything existing
                builder.header("If-None-Match", "*")

            if (!accessToken.isNullOrEmpty()) {
                builder.header("Authorization", "Bearer $accessToken")
            }

            response = httpClient.newCall(builder.build()).execute()
            if (response.isRedirect) {
                processRedirect(response)
@@ -243,6 +269,10 @@ open class DavResource @JvmOverloads constructor(
            if (ifMatchETag != null)
                builder.header("If-Match", QuotedStringUtils.asQuotedString(ifMatchETag))

            if (!accessToken.isNullOrEmpty()) {
                builder.header("Authorization", "Bearer $accessToken")
            }

            response = httpClient.newCall(builder.build()).execute()
            if (response.isRedirect)
                processRedirect(response)