mirror of
https://github.com/go-micro/go-micro.git
synced 2024-12-18 08:26:38 +02:00
136 lines
4.5 KiB
Go
136 lines
4.5 KiB
Go
|
package gifs
|
||
|
|
||
|
import (
|
||
|
"github.com/m3o/m3o-go/client"
|
||
|
)
|
||
|
|
||
|
func NewGifsService(token string) *GifsService {
|
||
|
return &GifsService{
|
||
|
client: client.NewClient(&client.Options{
|
||
|
Token: token,
|
||
|
}),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
type GifsService struct {
|
||
|
client *client.Client
|
||
|
}
|
||
|
|
||
|
// Search for a gif
|
||
|
func (t *GifsService) Search(request *SearchRequest) (*SearchResponse, error) {
|
||
|
rsp := &SearchResponse{}
|
||
|
return rsp, t.client.Call("gifs", "Search", request, rsp)
|
||
|
}
|
||
|
|
||
|
type Gif struct {
|
||
|
// URL used for embedding the GIF
|
||
|
EmbedUrl string `json:"embedUrl"`
|
||
|
// The ID of the GIF
|
||
|
Id string `json:"id"`
|
||
|
// The different formats available for this GIF
|
||
|
Images *ImageFormats `json:"images"`
|
||
|
// The content rating for the GIF
|
||
|
Rating string `json:"rating"`
|
||
|
// A short URL for this GIF
|
||
|
ShortUrl string `json:"shortUrl"`
|
||
|
// The slug used in the GIF's URL
|
||
|
Slug string `json:"slug"`
|
||
|
// The page on which this GIF was found
|
||
|
Source string `json:"source"`
|
||
|
// The title for this GIF
|
||
|
Title string `json:"title"`
|
||
|
// The URL for this GIF
|
||
|
Url string `json:"url"`
|
||
|
}
|
||
|
|
||
|
type ImageFormat struct {
|
||
|
// height
|
||
|
Height int32 `json:"height"`
|
||
|
// size of the MP4 version
|
||
|
Mp4size int32 `json:"mp4size"`
|
||
|
// URL to an MP4 version of the gif
|
||
|
Mp4url string `json:"mp4url"`
|
||
|
// size in bytes
|
||
|
Size int32 `json:"size"`
|
||
|
// URL of the gif
|
||
|
Url string `json:"url"`
|
||
|
// size of the webp version
|
||
|
WebpSize int32 `json:"webpSize"`
|
||
|
// URL to a webp version of the gif
|
||
|
WebpUrl string `json:"webpUrl"`
|
||
|
// width
|
||
|
Width int32 `json:"width"`
|
||
|
}
|
||
|
|
||
|
type ImageFormats struct {
|
||
|
// A downsized version of the GIF < 2MB
|
||
|
Downsized *ImageFormat `json:"downsized"`
|
||
|
// A downsized version of the GIF < 8MB
|
||
|
DownsizedLarge *ImageFormat `json:"downsizedLarge"`
|
||
|
// A downsized version of the GIF < 5MB
|
||
|
DownsizedMedium *ImageFormat `json:"downsizedMedium"`
|
||
|
// A downsized version of the GIF < 200kb
|
||
|
DownsizedSmall *ImageFormat `json:"downsizedSmall"`
|
||
|
// Static image of the downsized version of the GIF
|
||
|
DownsizedStill *ImageFormat `json:"downsizedStill"`
|
||
|
// Version of the GIF with fixed height of 200 pixels. Good for mobile use
|
||
|
FixedHeight *ImageFormat `json:"fixedHeight"`
|
||
|
// Version of the GIF with fixed height of 200 pixels and number of frames reduced to 6
|
||
|
FixedHeightDownsampled *ImageFormat `json:"fixedHeightDownsampled"`
|
||
|
// Version of the GIF with fixed height of 100 pixels. Good for mobile keyboards
|
||
|
FixedHeightSmall *ImageFormat `json:"fixedHeightSmall"`
|
||
|
// Static image of the GIF with fixed height of 100 pixels
|
||
|
FixedHeightSmallStill *ImageFormat `json:"fixedHeightSmallStill"`
|
||
|
// Static image of the GIF with fixed height of 200 pixels
|
||
|
FixedHeightStill *ImageFormat `json:"fixedHeightStill"`
|
||
|
// Version of the GIF with fixed width of 200 pixels. Good for mobile use
|
||
|
FixedWidth *ImageFormat `json:"fixedWidth"`
|
||
|
// Version of the GIF with fixed width of 200 pixels and number of frames reduced to 6
|
||
|
FixedWidthDownsampled *ImageFormat `json:"fixedWidthDownsampled"`
|
||
|
// Version of the GIF with fixed width of 100 pixels. Good for mobile keyboards
|
||
|
FixedWidthSmall *ImageFormat `json:"fixedWidthSmall"`
|
||
|
// Static image of the GIF with fixed width of 100 pixels
|
||
|
FixedWidthSmallStill *ImageFormat `json:"fixedWidthSmallStill"`
|
||
|
// Static image of the GIF with fixed width of 200 pixels
|
||
|
FixedWidthStill *ImageFormat `json:"fixedWidthStill"`
|
||
|
// 15 second version of the GIF looping
|
||
|
Looping *ImageFormat `json:"looping"`
|
||
|
// The original GIF. Good for desktop use
|
||
|
Original *ImageFormat `json:"original"`
|
||
|
// Static image of the original version of the GIF
|
||
|
OriginalStill *ImageFormat `json:"originalStill"`
|
||
|
// mp4 version of the GIF <50kb displaying first 1-2 secs
|
||
|
Preview *ImageFormat `json:"preview"`
|
||
|
// Version of the GIF <50kb displaying first 1-2 secs
|
||
|
PreviewGif *ImageFormat `json:"previewGif"`
|
||
|
}
|
||
|
|
||
|
type Pagination struct {
|
||
|
// total number returned in this response
|
||
|
Count int32 `json:"count"`
|
||
|
// position in pagination
|
||
|
Offset int32 `json:"offset"`
|
||
|
// total number of results available
|
||
|
TotalCount int32 `json:"totalCount"`
|
||
|
}
|
||
|
|
||
|
type SearchRequest struct {
|
||
|
// ISO 2 letter language code for regional content
|
||
|
Lang string `json:"lang"`
|
||
|
// Max number of gifs to return. Defaults to 25
|
||
|
Limit int32 `json:"limit"`
|
||
|
// The start position of results (used with pagination)
|
||
|
Offset int32 `json:"offset"`
|
||
|
// The search term
|
||
|
Query string `json:"query"`
|
||
|
// Apply age related content filter. "g", "pg", "pg-13", or "r". Defaults to "g"
|
||
|
Rating string `json:"rating"`
|
||
|
}
|
||
|
|
||
|
type SearchResponse struct {
|
||
|
// list of results
|
||
|
Data []Gif `json:"data"`
|
||
|
// information on pagination
|
||
|
Pagination *Pagination `json:"pagination"`
|
||
|
}
|