mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-11 19:04:35 +00:00
* feat: add joke api close #124 * chore: count boundary * fix: bug fix chore: update README.md * feat: add publicapi.json
44 lines
775 B
Go
44 lines
775 B
Go
package handler
|
|
|
|
import (
|
|
"context"
|
|
"math/rand"
|
|
|
|
"github.com/micro/services/joke/model"
|
|
pb "github.com/micro/services/joke/proto"
|
|
)
|
|
|
|
type Joke struct{}
|
|
|
|
// Random is used to get random jokes
|
|
func (e *Joke) Random(_ context.Context, req *pb.RandomRequest, rsp *pb.RandomResponse) error {
|
|
jokes := model.GetAllJokes()
|
|
count := req.Count
|
|
|
|
if count <= 0 {
|
|
count = 1
|
|
} else if count > 10 {
|
|
count = 10
|
|
}
|
|
|
|
if count > int32(len(jokes)) {
|
|
count = int32(len(jokes))
|
|
}
|
|
|
|
for i := int32(0); i < count; i++ {
|
|
random := jokes[rand.Intn(len(jokes))]
|
|
|
|
info := &pb.JokeInfo{
|
|
Id: random.Id,
|
|
Title: random.Title,
|
|
Body: random.Body,
|
|
Category: random.Category,
|
|
Source: random.Source,
|
|
}
|
|
|
|
rsp.Jokes = append(rsp.Jokes, info)
|
|
}
|
|
|
|
return nil
|
|
}
|