Files
services/joke/handler/joke.go
zhaoyang 72827704d2 feat: add joke api (#294)
* feat: add joke api
close #124

* chore: count boundary

* fix: bug fix
chore: update README.md

* feat: add publicapi.json
2021-12-08 10:38:03 +00:00

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
}