implement a lot of the API, a lot of the plumbing that is required

This commit is contained in:
Matthieu 2020-02-29 21:51:30 +01:00 committed by Andrew Dobis
parent aa788f9720
commit b3e4525e85
8 changed files with 51 additions and 14 deletions

View File

@ -44,7 +44,6 @@ dependencies {
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.7.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.16'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
testImplementation "com.github.tomakehurst:wiremock-jre8:2.26.2"
testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
testImplementation 'junit:junit:4.13'

View File

@ -14,9 +14,49 @@ import retrofit2.converter.gson.GsonConverterFactory
class MainActivity : AppCompatActivity() {
private var statuses: ArrayList<Status>? = null
private val BASE_URL = "https://pixelfed.de/"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
loadData()
}
private fun loadData() {
//Define the Retrofit request//
val pixelfedAPI = Retrofit.Builder()
//Set the APIs base URL//
.baseUrl(BASE_URL)
//Specify the converter factory to use for serialization and deserialization//
.addConverterFactory(GsonConverterFactory.create())
//Add a call adapter factory to support RxJava return types//
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
//Build the Retrofit instance//
.build().create(PixelfedAPI::class.java)
pixelfedAPI.timelinePublic(null, null, null, null, null)
.enqueue(object : Callback<List<Status>> {
override fun onResponse(call: Call<List<Status>>, response: Response<List<Status>>) {
if (response.code() == 200) {
Log.e("OK", response.body().toString())
statuses = response.body() as ArrayList<Status>?
}
}
override fun onFailure(call: Call<List<Status>>, t: Throwable) {
Log.e("Ouch, not OK", t.toString())
}
})
}
}

View File

@ -1,10 +1,7 @@
package com.h.pixeldroid.api
import android.util.Log
import com.h.pixeldroid.objects.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
import retrofit2.converter.gson.GsonConverterFactory

View File

@ -1,6 +1,5 @@
package com.h.pixeldroid.objects
/*
Represents a user and their associated profile.
https://docs.joinmastodon.org/entities/account/
@ -32,4 +31,4 @@ data class Account(
val fields: List<Field>? = emptyList(),
val bot: Boolean = false,
val source: Source? = null
)
)

View File

@ -6,4 +6,5 @@ data class Application (
//Optional attributes
val website: String? = null,
val vapid_key: String? = null
)
)

View File

@ -8,4 +8,5 @@ data class Emoji(
val visible_in_picker: Boolean,
//Optional attributes
val category: String? = null
)
)

View File

@ -1,6 +1,5 @@
package com.h.pixeldroid.objects
/*
Represents a status posted by an account.
https://docs.joinmastodon.org/entities/status/
@ -15,12 +14,12 @@ data class Status(
val visibility: Visibility,
val sensitive: Boolean,
val spoiler_text: String,
val media_attachments: List<Attachment>,
val media_attachments: ArrayList<Attachment>,
val application: Application,
//Rendering attributes
val mentions: List<Mention>,
val tags: List<Tag>,
val emojis: List<Emoji>,
val mentions: ArrayList<Mention>,
val tags: ArrayList<Tag>,
val emojis: ArrayList<Emoji>,
//Informational attributes
val reblogs_count: Int,
val favourites_count: Int,

View File

@ -6,4 +6,5 @@ data class Tag(
val url: String,
//Optional attributes
val history: List<History>? = emptyList()
)
)