Fetch History
The history is designed to retrieve the history of a specific task based on its UUID.
The
step
is optional. If skipped, the history of the latest stage will be returned.
Examples
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"time"
)
const BaseURI = "https://hyperhuman.deemos.com/api"
var client = &http.Client{Timeout: 10 * time.Second}
type HistoryInfoDto struct {
Model *string `json:"model,omitempty"`
TextureDiffuse *string `json:"texture_diffuse,omitempty"`
TexturePbr *string `json:"texture_pbr,omitempty"`
TextureShaded *string `json:"texture_shaded,omitempty"`
PreviewImage *string `json:"preview_image,omitempty"`
Settings *string `json:"settings,omitempty"`
GenerateTime *string `json:"generate_time,omitempty"`
}
type CommonError struct {
Error *string `json:"error,omitempty"`
}
type RodinModelHistoryResponse struct {
CommonError
HistoryInfo map[string]HistoryInfoDto `json:"history_info,omitempty"`
}
type RodinTextureHistoryResponse struct {
CommonError
HistoryInfo map[string]map[string]HistoryInfoDto `json:"history_info,omitempty"`
}
func rodinHistory(token string, taskUUID string, step string) (*http.Response, error) {
// Create the request body
data := map[string]string{"uuid": taskUUID, "step": step}
jsonData, err := json.Marshal(data)
if err != nil {
return nil, err
}
// Create the request
req, err := http.NewRequest("POST", fmt.Sprintf("%s/task/rodin_history", BaseURI), bytes.NewBuffer(jsonData))
if err != nil {
return nil, err
}
// Set headers
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
// Send the request
return client.Do(req)
}
func RodinModelHistory(token string, taskUUID string) (*RodinModelHistoryResponse, error) {
resp, err := rodinHistory(token, taskUUID, "ModelGenerate")
if err != nil {
return nil, err
}
defer resp.Body.Close()
// Decode the response JSON
var raw json.RawMessage
var result RodinModelHistoryResponse
err = json.NewDecoder(resp.Body).Decode(&raw)
if err != nil {
return nil, err
}
err = json.Unmarshal(raw, &result)
if err != nil {
return nil, err
}
err = json.Unmarshal(raw, &result.HistoryInfo)
if err != nil {
return nil, err
}
if result.Error != nil {
return nil, fmt.Errorf("error: %s", *result.Error)
}
return &result, nil
}
func RodinTextureHistory(token string, taskUUID string) (*RodinTextureHistoryResponse, error) {
resp, err := rodinHistory(token, taskUUID, "TextureGenerate")
if err != nil {
return nil, err
}
defer resp.Body.Close()
// Decode the response JSON
var raw json.RawMessage
var result RodinTextureHistoryResponse
err = json.NewDecoder(resp.Body).Decode(&raw)
if err != nil {
return nil, err
}
err = json.Unmarshal(raw, &result)
if err != nil {
return nil, err
}
err = json.Unmarshal(raw, &result.HistoryInfo)
if err != nil {
return nil, err
}
if result.Error != nil {
return nil, fmt.Errorf("error: %s", *result.Error)
}
return &result, nil
}
func main() {
token := "eyJhbGciOiJIUzI1NiJ9.your.token"
modelResult, err := RodinModelHistory(token, "01234567-your-uuid-here-0123456789ab")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(*modelResult.HistoryInfo["v1"].PreviewImage)
textureResult, err := RodinTextureHistory(token, "01234567-your-uuid-here-0123456789ab")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(*textureResult.HistoryInfo["0000.png"]["v1"].PreviewImage)
}
Last updated