All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cjcrafter.openai.threads.ThreadHandlerImpl.kt Maven / Gradle / Ivy

package com.cjcrafter.openai.threads

import com.cjcrafter.openai.RequestHelper
import com.cjcrafter.openai.threads.message.MessageHandler
import com.cjcrafter.openai.threads.message.MessageHandlerImpl
import com.cjcrafter.openai.threads.runs.RunHandler
import com.cjcrafter.openai.threads.runs.RunHandlerImpl

class ThreadHandlerImpl(
    private val requestHelper: RequestHelper,
    private val endpoint: String,
): ThreadHandler {
    override fun create(request: CreateThreadRequest): Thread {
        val httpRequest = requestHelper.buildRequest(request, endpoint).addHeader("OpenAI-Beta", "assistants=v1").build()
        return requestHelper.executeRequest(httpRequest, Thread::class.java)
    }

    override fun retrieve(id: String): Thread {
        val httpRequest = requestHelper.buildRequestNoBody("$endpoint/$id").addHeader("OpenAI-Beta", "assistants=v1").get().build()
        return requestHelper.executeRequest(httpRequest, Thread::class.java)
    }

    override fun delete(id: String): ThreadDeletionStatus {
        val httpRequest = requestHelper.buildRequestNoBody("$endpoint/$id").addHeader("OpenAI-Beta", "assistants=v1").delete().build()
        return requestHelper.executeRequest(httpRequest, ThreadDeletionStatus::class.java)
    }

    override fun modify(id: String, request: ModifyThreadRequest): Thread {
        val httpRequest = requestHelper.buildRequest(request, "$endpoint/$id").addHeader("OpenAI-Beta", "assistants=v1").build()
        return requestHelper.executeRequest(httpRequest, Thread::class.java)
    }

    private val messageHandlers = mutableMapOf()
    override fun messages(threadId: String): MessageHandler {
        return messageHandlers.getOrPut(threadId) {
            MessageHandlerImpl(requestHelper, "$endpoint/$threadId/messages", threadId)
        }
    }

    private val runHandlers = mutableMapOf()
    override fun runs(threadId: String): RunHandler {
        return runHandlers.getOrPut(threadId) {
            RunHandlerImpl(requestHelper, "$endpoint/$threadId/runs", threadId)
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy