stash/internal/api/urlbuilders/scene.go

84 lines
2.2 KiB
Go
Raw Normal View History

2019-02-09 12:30:49 +00:00
package urlbuilders
import (
"fmt"
2022-10-09 23:11:51 +00:00
"net/url"
"strconv"
"time"
)
2019-02-09 12:30:49 +00:00
type SceneURLBuilder struct {
2019-02-09 12:30:49 +00:00
BaseURL string
SceneID string
}
func NewSceneURLBuilder(baseURL string, sceneID int) SceneURLBuilder {
return SceneURLBuilder{
2019-02-09 12:30:49 +00:00
BaseURL: baseURL,
SceneID: strconv.Itoa(sceneID),
}
}
func (b SceneURLBuilder) GetStreamURL(apiKey string) *url.URL {
2022-10-09 23:11:51 +00:00
u, err := url.Parse(fmt.Sprintf("%s/scene/%s/stream", b.BaseURL, b.SceneID))
if err != nil {
// shouldn't happen
panic(err)
}
if apiKey != "" {
2022-10-09 23:11:51 +00:00
v := u.Query()
v.Set("apikey", apiKey)
2022-10-09 23:11:51 +00:00
u.RawQuery = v.Encode()
}
2022-10-09 23:11:51 +00:00
return u
2019-02-09 12:30:49 +00:00
}
func (b SceneURLBuilder) GetStreamPreviewURL() string {
2019-02-09 12:30:49 +00:00
return b.BaseURL + "/scene/" + b.SceneID + "/preview"
}
func (b SceneURLBuilder) GetStreamPreviewImageURL() string {
2019-02-09 12:30:49 +00:00
return b.BaseURL + "/scene/" + b.SceneID + "/webp"
}
func (b SceneURLBuilder) GetSpriteVTTURL(checksum string) string {
return b.BaseURL + "/scene/" + checksum + "_thumbs.vtt"
2019-02-09 12:30:49 +00:00
}
func (b SceneURLBuilder) GetSpriteURL(checksum string) string {
return b.BaseURL + "/scene/" + checksum + "_sprite.jpg"
}
func (b SceneURLBuilder) GetScreenshotURL(updateTime time.Time) string {
return b.BaseURL + "/scene/" + b.SceneID + "/screenshot?" + strconv.FormatInt(updateTime.Unix(), 10)
2019-02-09 12:30:49 +00:00
}
func (b SceneURLBuilder) GetChaptersVTTURL() string {
return b.BaseURL + "/scene/" + b.SceneID + "/vtt/chapter"
}
func (b SceneURLBuilder) GetSceneMarkerStreamURL(sceneMarkerID int) string {
return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerID) + "/stream"
2019-02-09 12:30:49 +00:00
}
func (b SceneURLBuilder) GetSceneMarkerStreamPreviewURL(sceneMarkerID int) string {
return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerID) + "/preview"
2019-02-09 12:30:49 +00:00
}
func (b SceneURLBuilder) GetSceneMarkerStreamScreenshotURL(sceneMarkerID int) string {
return b.BaseURL + "/scene/" + b.SceneID + "/scene_marker/" + strconv.Itoa(sceneMarkerID) + "/screenshot"
}
func (b SceneURLBuilder) GetFunscriptURL() string {
return b.BaseURL + "/scene/" + b.SceneID + "/funscript"
}
func (b SceneURLBuilder) GetCaptionURL() string {
return b.BaseURL + "/scene/" + b.SceneID + "/caption"
}
func (b SceneURLBuilder) GetInteractiveHeatmapURL() string {
return b.BaseURL + "/scene/" + b.SceneID + "/interactive_heatmap"
}