mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-16 21:14:36 +00:00
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
This commit is contained in:
43
joke/handler/joke.go
Normal file
43
joke/handler/joke.go
Normal file
@@ -0,0 +1,43 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user