Skip to content

Files

Latest commit

 

History

History
113 lines (107 loc) · 4.19 KB

fetch-api.md

File metadata and controls

113 lines (107 loc) · 4.19 KB

FetchContentAPI example

import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.kinestex.kinestexsdkkotlin.APIContentResult
import com.kinestex.kinestexsdkkotlin.BodyPart
import com.kinestex.kinestexsdkkotlin.ContentType
import com.kinestex.kinestexsdkkotlin.KinesteXAPI
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class MainActivity : AppCompatActivity() {
    private val apiKey = "YOUR API KEY"
    private val company = "YOUR COMPANY NAME"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val btnFetchContent = findViewById<Button>(R.id.btnFetchContent)
        btnFetchContent.setOnClickListener {
            fetchContent()
        }
    }

    private fun fetchContent() {
        lifecycleScope.launch {
            try {
                val result = withContext(Dispatchers.IO) {
                    KinesteXAPI.fetchAPIContentData(
                        apiKey = apiKey,
                        companyName = company,
                        contentType = ContentType.WORKOUT,
                        category = "Fitness",
                        bodyParts = listOf(BodyPart.ABS),
                        limit = 5
                    )
                }
                handleAPIResult(result)
            } catch (e: Exception) {
                Toast.makeText(
                    this@MainActivity,
                    "Error: ${e.message}",
                    Toast.LENGTH_LONG
                ).show()
            }
        }
    }

    private fun handleAPIResult(result: APIContentResult) {
        when (result) {
            is APIContentResult.Workout -> {
                val workout = result.workout
                // Handle single workout data
                println("Workout Title: ${workout.title}")
                println("Body Parts: ${workout.body_parts.joinToString { it.value }}")
            }
            is APIContentResult.Plan -> {
                val plan = result.plan
                // Handle single plan data
                println("Plan Title: ${plan.title}")
                println("Categories: ${plan.category.description}")
            }
            is APIContentResult.Exercise -> {
                val exercise = result.exercise
                // Handle single exercise data
                println("Exercise Title: ${exercise.title}")
                println("Body Parts: ${exercise.body_parts.joinToString { it.value }}")
            }
            is APIContentResult.Workouts -> {
                val workouts = result.workouts.workouts
                // Handle list of workouts
                workouts.forEach { workout ->
                    println("Workout Title: ${workout.title}")
                    println("Body Parts: ${workout.body_parts.joinToString { it.value }}")
                }
                // Use result.workouts.lastDocId for pagination
            }
            is APIContentResult.Plans -> {
                val plans = result.plans.plans
                // Handle list of plans
                plans.forEach { plan ->
                    println("Plan Title: ${plan.title}")
                    println("Categories: ${plan.category.description}")
                }
                // Use result.plans.lastDocId for pagination
            }
            is APIContentResult.Exercises -> {
                val exercises = result.exercises.exercises
                // Handle list of exercises
                exercises.forEach { exercise ->
                    println("Exercise Title: ${exercise.title}")
                    println("Body Parts: ${exercise.body_parts.joinToString { it.value }}")
                }
                // Use result.exercises.lastDocId for pagination
            }
            is APIContentResult.Error -> {
                // Handle error
                Toast.makeText(
                    this@MainActivity,
                    "Error: ${result.message}",
                    Toast.LENGTH_LONG
                ).show()
            }
        }
    }
}