mirror of
https://github.com/hmalik144/api-testing-automation-framework.git
synced 2026-03-18 07:26:17 +00:00
Initial commit
- Retrofit used to call API
This commit is contained in:
37
src/main/kotlin/api/BookerApi.kt
Normal file
37
src/main/kotlin/api/BookerApi.kt
Normal file
@@ -0,0 +1,37 @@
|
||||
package api
|
||||
|
||||
import okhttp3.OkHttpClient
|
||||
import java.util.concurrent.TimeUnit
|
||||
import okhttp3.logging.HttpLoggingInterceptor
|
||||
import retrofit2.Retrofit
|
||||
import retrofit2.converter.gson.GsonConverterFactory
|
||||
|
||||
class BookerApi {
|
||||
private val baseUrl = "https://restful-booker.herokuapp.com/"
|
||||
|
||||
private val loggingInterceptor = HttpLoggingInterceptor().apply {
|
||||
level = HttpLoggingInterceptor.Level.BODY
|
||||
}
|
||||
|
||||
private fun buildOkHttpClient(timeoutSeconds: Long = 30L): OkHttpClient {
|
||||
val builder = OkHttpClient.Builder()
|
||||
|
||||
builder
|
||||
.addInterceptor(loggingInterceptor)
|
||||
.connectTimeout(timeoutSeconds, TimeUnit.SECONDS)
|
||||
.writeTimeout(timeoutSeconds, TimeUnit.SECONDS)
|
||||
.readTimeout(timeoutSeconds, TimeUnit.SECONDS)
|
||||
|
||||
return builder.build()
|
||||
}
|
||||
|
||||
fun invoke(): RestfulBookerApi {
|
||||
val okHttpClient = buildOkHttpClient()
|
||||
return Retrofit.Builder()
|
||||
.client(okHttpClient)
|
||||
.baseUrl(baseUrl)
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build()
|
||||
.create(RestfulBookerApi::class.java)
|
||||
}
|
||||
}
|
||||
61
src/main/kotlin/api/RestfulBookerApi.kt
Normal file
61
src/main/kotlin/api/RestfulBookerApi.kt
Normal file
@@ -0,0 +1,61 @@
|
||||
package api
|
||||
|
||||
import model.*
|
||||
import retrofit2.Response
|
||||
import retrofit2.http.*
|
||||
|
||||
interface RestfulBookerApi {
|
||||
|
||||
@Headers("Content-Type:application/json")
|
||||
@POST("auth")
|
||||
suspend fun createAuthToken(
|
||||
@Field("username") username: String,
|
||||
@Field("password") password: String,
|
||||
): Response<AuthResponse>
|
||||
|
||||
@GET("booking")
|
||||
suspend fun getBookingIds(
|
||||
@Field("firstname") firstname: String? = null,
|
||||
@Field("lastname") lastname: String? = null,
|
||||
@Field("checkin") checkin: String? = null,
|
||||
@Field("checkout") checkout: String? = null,
|
||||
): Response<List<BookingIdResponse>>
|
||||
|
||||
@GET("booking/{id}")
|
||||
suspend fun getSingleBooking(
|
||||
@Path("id") id: String
|
||||
): Response<BookingResponse>
|
||||
|
||||
@Headers("Content-Type:application/json")
|
||||
@POST("booking")
|
||||
suspend fun createBooking(
|
||||
@Body booking: BookingRequest,
|
||||
): Response<CreateBookingResponse>
|
||||
|
||||
@Headers("Content-Type:application/json", "Accept: application/json")
|
||||
@PUT("booking/{id}")
|
||||
suspend fun updateBooking(
|
||||
@Path("id") id: String,
|
||||
@Body booking: BookingRequest,
|
||||
@Header("Authorization") token: String
|
||||
): Response<BookingResponse>
|
||||
|
||||
@Headers("Content-Type:application/json", "Accept: application/json")
|
||||
@PATCH("booking/{id}")
|
||||
suspend fun partialUpdateBooking(
|
||||
@Path("id") id: String,
|
||||
@Header("Authorization") token: String,
|
||||
@Field("firstname") firstname: String? = null,
|
||||
@Field("lastname") lastname: String? = null,
|
||||
@Field("totalprice") totalprice: Float? = null,
|
||||
@Field("depositpaid") depositpaid: Boolean? = null,
|
||||
@Field("checkin") checkin: String? = null,
|
||||
@Field("checkout") checkout: String? = null,
|
||||
@Field("additionalneeds") additionalneeds: String? = null
|
||||
): Response<BookingResponse>
|
||||
|
||||
@DELETE("booking/{id}")
|
||||
suspend fun deleteBooking(
|
||||
@Path("id") id: String
|
||||
): Response<Any>
|
||||
}
|
||||
5
src/main/kotlin/model/AuthResponse.kt
Normal file
5
src/main/kotlin/model/AuthResponse.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package model
|
||||
|
||||
class AuthResponse {
|
||||
var token: String? = null
|
||||
}
|
||||
5
src/main/kotlin/model/BookingIdResponse.kt
Normal file
5
src/main/kotlin/model/BookingIdResponse.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package model
|
||||
|
||||
class BookingIdResponse {
|
||||
var bookingid = 0
|
||||
}
|
||||
12
src/main/kotlin/model/BookingRequest.kt
Normal file
12
src/main/kotlin/model/BookingRequest.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
package model
|
||||
|
||||
data class BookingRequest (
|
||||
var firstname: String? = null,
|
||||
var lastname: String? = null,
|
||||
var totalprice: Int = 0,
|
||||
var depositpaid: Boolean = false,
|
||||
var bookingdates: Bookingdates? = null,
|
||||
var additionalneeds: String? = null,
|
||||
)
|
||||
|
||||
|
||||
11
src/main/kotlin/model/BookingResponse.kt
Normal file
11
src/main/kotlin/model/BookingResponse.kt
Normal file
@@ -0,0 +1,11 @@
|
||||
package model
|
||||
|
||||
|
||||
data class BookingResponse (
|
||||
var firstname: String? = null,
|
||||
var lastname: String? = null,
|
||||
var totalprice: Int = 0,
|
||||
var depositpaid: Boolean = false,
|
||||
var bookingdates: Bookingdates? = null,
|
||||
var additionalneeds: String? = null
|
||||
)
|
||||
6
src/main/kotlin/model/Bookingdates.kt
Normal file
6
src/main/kotlin/model/Bookingdates.kt
Normal file
@@ -0,0 +1,6 @@
|
||||
package model
|
||||
|
||||
data class Bookingdates (
|
||||
var checkin: String? = null,
|
||||
var checkout: String? = null,
|
||||
)
|
||||
6
src/main/kotlin/model/CreateBookingResponse.kt
Normal file
6
src/main/kotlin/model/CreateBookingResponse.kt
Normal file
@@ -0,0 +1,6 @@
|
||||
package model
|
||||
|
||||
class CreateBookingResponse {
|
||||
var bookingid = 0
|
||||
var booking: BookingResponse? = null
|
||||
}
|
||||
Reference in New Issue
Block a user