Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
gov-project-generator
package main
import (
"crypto/rand"
"encoding/binary"
"encoding/json"
"io/ioutil"
"log"
"net/http"
"strings"
)
const SourceURL = "https://gist.githubusercontent.com/narze/344c8b39212438114fee1f5bd2984027/raw/7a2c2965bd7331b7d346cf50e9429a35bfdfdf8e/output.txt"
type NameResponse struct {
Name string `json:"name"`
}
type Result struct {
Success bool `json:"success"`
HTTPCode int `json:"code"`
Error string `json:"error,omitempty"`
Data *NameResponse
}
func main() {
http.ListenAndServe(":8000", http.HandlerFunc(Index))
}
func Index(resp http.ResponseWriter, r *http.Request) {
log.Println(r.Method, r.URL)
result := Result{}
if name, err := RandName(); err != nil {
result = Result{
Success: false,
Error: err.Error(),
HTTPCode: 500,
Data: nil,
}
} else {
result = Result{
Success: true,
HTTPCode: 200,
Data: &NameResponse{Name: name},
}
}
resp.WriteHeader(result.HTTPCode)
if err := json.NewEncoder(resp).Encode(result); err != nil {
log.Println("I/O err:", err)
}
}
func RandName() (string, error) {
resp, err := http.Get(SourceURL)
if err != nil {
return "", err
}
txt, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", err
}
entries := strings.Split(string(txt), "\n")
entries = entries[1:] // skip first line, which is a comment
idx := uint32(0)
if err := binary.Read(rand.Reader, binary.BigEndian, &idx); err != nil {
return "", err
}
return entries[int(idx)%len(entries)], nil
}
sub = %w[เรา หมอ ชาติ ไทย]
verb = %w[รัก มี เที่ยว ชนะ ชิม ช้อป ใช้]
obj = %w[เรา กัน ไทย ด้วยกัน ชาติ หมอ]
puts sub.product(verb).map(&:join).sort
puts sub.product(verb, obj).map(&:join).sort
// With obj
ชาติชนะ
ชาติชิม
ชาติช้อป
ชาติมี
ชาติรัก
ชาติเที่ยว
ชาติใช้
หมอชนะ
หมอชิม
หมอช้อป
หมอมี
หมอรัก
หมอเที่ยว
หมอใช้
เราชนะ
เราชิม
เราช้อป
เรามี
เรารัก
เราเที่ยว
เราใช้
ไทยชนะ
ไทยชิม
ไทยช้อป
ไทยมี
ไทยรัก
ไทยเที่ยว
ไทยใช้
// Without obj
ชาติชนะกัน
ชาติชนะชาติ
ชาติชนะด้วยกัน
ชาติชนะหมอ
ชาติชนะเรา
ชาติชนะไทย
ชาติชิมกัน
ชาติชิมชาติ
ชาติชิมด้วยกัน
ชาติชิมหมอ
ชาติชิมเรา
ชาติชิมไทย
ชาติช้อปกัน
ชาติช้อปชาติ
ชาติช้อปด้วยกัน
ชาติช้อปหมอ
ชาติช้อปเรา
ชาติช้อปไทย
ชาติมีกัน
ชาติมีชาติ
ชาติมีด้วยกัน
ชาติมีหมอ
ชาติมีเรา
ชาติมีไทย
ชาติรักกัน
ชาติรักชาติ
ชาติรักด้วยกัน
ชาติรักหมอ
ชาติรักเรา
ชาติรักไทย
ชาติเที่ยวกัน
ชาติเที่ยวชาติ
ชาติเที่ยวด้วยกัน
ชาติเที่ยวหมอ
ชาติเที่ยวเรา
ชาติเที่ยวไทย
ชาติใช้กัน
ชาติใช้ชาติ
ชาติใช้ด้วยกัน
ชาติใช้หมอ
ชาติใช้เรา
ชาติใช้ไทย
หมอชนะกัน
หมอชนะชาติ
หมอชนะด้วยกัน
หมอชนะหมอ
หมอชนะเรา
หมอชนะไทย
หมอชิมกัน
หมอชิมชาติ
หมอชิมด้วยกัน
หมอชิมหมอ
หมอชิมเรา
หมอชิมไทย
หมอช้อปกัน
หมอช้อปชาติ
หมอช้อปด้วยกัน
หมอช้อปหมอ
หมอช้อปเรา
หมอช้อปไทย
หมอมีกัน
หมอมีชาติ
หมอมีด้วยกัน
หมอมีหมอ
หมอมีเรา
หมอมีไทย
หมอรักกัน
หมอรักชาติ
หมอรักด้วยกัน
หมอรักหมอ
หมอรักเรา
หมอรักไทย
หมอเที่ยวกัน
หมอเที่ยวชาติ
หมอเที่ยวด้วยกัน
หมอเที่ยวหมอ
หมอเที่ยวเรา
หมอเที่ยวไทย
หมอใช้กัน
หมอใช้ชาติ
หมอใช้ด้วยกัน
หมอใช้หมอ
หมอใช้เรา
หมอใช้ไทย
เราชนะกัน
เราชนะชาติ
เราชนะด้วยกัน
เราชนะหมอ
เราชนะเรา
เราชนะไทย
เราชิมกัน
เราชิมชาติ
เราชิมด้วยกัน
เราชิมหมอ
เราชิมเรา
เราชิมไทย
เราช้อปกัน
เราช้อปชาติ
เราช้อปด้วยกัน
เราช้อปหมอ
เราช้อปเรา
เราช้อปไทย
เรามีกัน
เรามีชาติ
เรามีด้วยกัน
เรามีหมอ
เรามีเรา
เรามีไทย
เรารักกัน
เรารักชาติ
เรารักด้วยกัน
เรารักหมอ
เรารักเรา
เรารักไทย
เราเที่ยวกัน
เราเที่ยวชาติ
เราเที่ยวด้วยกัน
เราเที่ยวหมอ
เราเที่ยวเรา
เราเที่ยวไทย
เราใช้กัน
เราใช้ชาติ
เราใช้ด้วยกัน
เราใช้หมอ
เราใช้เรา
เราใช้ไทย
ไทยชนะกัน
ไทยชนะชาติ
ไทยชนะด้วยกัน
ไทยชนะหมอ
ไทยชนะเรา
ไทยชนะไทย
ไทยชิมกัน
ไทยชิมชาติ
ไทยชิมด้วยกัน
ไทยชิมหมอ
ไทยชิมเรา
ไทยชิมไทย
ไทยช้อปกัน
ไทยช้อปชาติ
ไทยช้อปด้วยกัน
ไทยช้อปหมอ
ไทยช้อปเรา
ไทยช้อปไทย
ไทยมีกัน
ไทยมีชาติ
ไทยมีด้วยกัน
ไทยมีหมอ
ไทยมีเรา
ไทยมีไทย
ไทยรักกัน
ไทยรักชาติ
ไทยรักด้วยกัน
ไทยรักหมอ
ไทยรักเรา
ไทยรักไทย
ไทยเที่ยวกัน
ไทยเที่ยวชาติ
ไทยเที่ยวด้วยกัน
ไทยเที่ยวหมอ
ไทยเที่ยวเรา
ไทยเที่ยวไทย
ไทยใช้กัน
ไทยใช้ชาติ
ไทยใช้ด้วยกัน
ไทยใช้หมอ
ไทยใช้เรา
ไทยใช้ไทย
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment