implémentation de l'API themovieDB

pull/17/head
louwar 2 years ago
parent 77452aff27
commit 745ecb427c

@ -47,4 +47,12 @@ dependencies {
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation "com.squareup.okhttp3:okhttp:4.9.3"
implementation "com.squareup.okhttp3:logging-interceptor:4.9.3"
implementation "com.google.code.gson:gson:2.8.9"
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
}

@ -0,0 +1,66 @@
package fr.iut.cinecool
import retrofit2.Call
import com.google.android.gms.common.api.Response
import com.google.gson.GsonBuilder
import fr.iut.cinecool.interfaces.ApiService
import fr.iut.cinecool.model.MovieResponse
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import javax.security.auth.callback.Callback
class ApiClient {
companion object {
private const val BASE_URL = "https://api.themoviedb.org/3/"
fun create(): ApiService {
val gson = GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
.create()
val logger = HttpLoggingInterceptor()
logger.level = HttpLoggingInterceptor.Level.BASIC
val client = OkHttpClient.Builder()
.addInterceptor(logger)
.build()
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build()
return retrofit.create(ApiService::class.java)
}
val retrofit = Retrofit.Builder()
.baseUrl("https://api.themoviedb.org/3/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val movieApiService = retrofit.create(ApiService::class.java)
val apiKey = "a97243d7813d31446f6c43284e6854d5"
val call = movieApiService.getPopularMovies(apiKey)
// TO DO
/*call.enqueue(object : Callback<MovieResponse> {
override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
// Code à exécuter lorsque la réponse est reçue
val movies = response.body()?.results
// Traitez les films renvoyés ici
}
override fun onFailure(call: Call<MovieResponse>, t: Throwable) {
// Code à exécuter en cas d'échec de la requête
}
})*/
}
}

@ -48,4 +48,6 @@ class DetailActivity : AppCompatActivity() {
textView2.text="Contenu de la page"
}
}

@ -0,0 +1,15 @@
package fr.iut.cinecool.interfaces
import fr.iut.cinecool.model.Movie
import fr.iut.cinecool.model.MovieResponse
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Query
interface ApiService {
@GET("movie/popular")
fun getPopularMovies(@Query("api_key") apiKey: String): Call<MovieResponse>
}

@ -1,5 +1,14 @@
package fr.iut.cinecool.model
import android.graphics.drawable.Drawable
import com.google.gson.annotations.SerializedName
data class Movie(val id:Int, val name:String, var mark:Int, val realisator:String, var duration: Double, val icon:Int)
// D'après l'API (TheMovieDB)
data class MovieAPI(
@SerializedName("id") val id: Int,
@SerializedName("title") val title: String,
@SerializedName("overview") val overview: String,
@SerializedName("poster_path") val posterPath: String?,
@SerializedName("vote_average") val voteAverage: Float
)

@ -0,0 +1,7 @@
package fr.iut.cinecool.model
import com.google.gson.annotations.SerializedName
// MovieResponse pour stocker la réponse JSON de l'API :
data class MovieResponse(
@SerializedName("results") val movies: List<Movie>
)
Loading…
Cancel
Save