comparison src/kaigo/horori/searcher/server/searcher.go @ 47:169936fed61b

small changes.
author pyon@macmini
date Tue, 21 Apr 2020 22:43:55 +0900
parents 6ec28d3c3e00
children ca00c4a85b98
comparison
equal deleted inserted replaced
46:6ec28d3c3e00 47:169936fed61b
1 /* 1 /*
2 Last Change: 2020-04-17 金 17:04:25. 2 Last Change: 2020-04-21 火 13:59:52.
3 */ 3 */
4 4
5 package main 5 package main
6 6
7 import ( 7 import (
8 "bytes"
9 "compress/gzip"
8 "encoding/csv" 10 "encoding/csv"
9 "fmt" 11 "fmt"
10 "io" 12 "io"
11 "io/ioutil" 13 "io/ioutil"
12 "log" 14 "log"
84 } 86 }
85 87
86 // Http-Handler 88 // Http-Handler
87 http.HandleFunc("/h/", hhs_handler) // Get /h/0800012345 -> name:addr:20200101#20210701#... 89 http.HandleFunc("/h/", hhs_handler) // Get /h/0800012345 -> name:addr:20200101#20210701#...
88 http.HandleFunc("/hn/", hhsnm_handler) // Get /h/0800012345:0800098765:... -> name1:name2:... 90 http.HandleFunc("/hn/", hhsnm_handler) // Get /h/0800012345:0800098765:... -> name1:name2:...
89 http.HandleFunc("/ht/", hhstm_handler) // Get /ht -> 20200314 91 http.HandleFunc("/ht/", hhstm_handler) // Get /ht/ -> 2020-03-14 12:34
90 http.HandleFunc("/ha/", hhsdb_handler) // Get /ha/ -> hhsdb.csv for Mover 92 http.HandleFunc("/ha/", hhsdb_handler) // Get /ha/ -> hhsdb.csv for Mover
91 http.HandleFunc("/i/", image_handler) // Get /i/20200110/0800012345.tgz 93 http.HandleFunc("/i/", image_handler) // Get /i/20200110/0800012345.tgz
92 http.HandleFunc("/r/", recent_handler) // Get /r/0800012345:0800067890:0800099999:... -> 0800012345,name1,20200101:0800067890,name2,20210405:... 94 http.HandleFunc("/r/", recent_handler) // Get /r/0800012345:0800067890:0800099999:... -> 0800012345,name1,20200101:0800067890,name2,20210405:...
93 http.HandleFunc("/d/", index_handler) // Get /d/20xx -> 20xx0401:2020xx0408:... , /d/20xx0401 -> 0800012345:0800098765:... 95 http.HandleFunc("/d/", index_handler) // Get /d/20xx -> 20xx0401:2020xx0408:... , /d/20xx0401 -> 0800012345:0800098765:...
94 http.HandleFunc("/u/", uphhsdb_handler) // Get /u/ -> ? 96 http.HandleFunc("/u/", uphhsdb_handler) // POST /u/
97 http.HandleFunc("/ui/", upimage_handler) // POST /ui/20200401/0800012345.tgz
95 98
96 log.Fatal(http.ListenAndServe(server, nil)) 99 log.Fatal(http.ListenAndServe(server, nil))
97 } 100 }
98 101
99 func loadDB() error { 102 func loadDB() error {
176 buf = append(buf, n) 179 buf = append(buf, n)
177 } 180 }
178 w.Write([]byte(strings.Join(buf, ":"))) 181 w.Write([]byte(strings.Join(buf, ":")))
179 } 182 }
180 183
181 /* Get /ht > 20200314 */ 184 /* Get /ht/ -> 2020-03-14 12:34 */
182 func hhstm_handler(w http.ResponseWriter, r *http.Request) { 185 func hhstm_handler(w http.ResponseWriter, r *http.Request) {
183 date := "" 186 date := ""
187 if fi, err := os.Stat(hhsdb); err == nil {
188 t := fi.ModTime()
189 date = t.Format("2006-01-02 15:04")
190 }
184 w.Write([]byte(date)) 191 w.Write([]byte(date))
185 } 192 }
186 193
187 /* Get /ha/ -> hhsdb.csv for Mover */ 194 /* Get /ha/ -> hhsdb.csv for Mover */
188 func hhsdb_handler(w http.ResponseWriter, r *http.Request) { 195 func hhsdb_handler(w http.ResponseWriter, r *http.Request) {
237 buf = iymdhash[ymd] 244 buf = iymdhash[ymd]
238 } 245 }
239 w.Write([]byte(buf[1:])) 246 w.Write([]byte(buf[1:]))
240 } 247 }
241 248
242 /* /u */ 249 /* POST /u/ */
243 func uphhsdb_handler(w http.ResponseWriter, r *http.Request) { 250 func uphhsdb_handler(w http.ResponseWriter, r *http.Request) {
251 if r.Method != http.MethodPost {
252 http.NotFound(w, r)
253 return
254 }
255
244 server_root := filepath.Dir(os.Args[0]) 256 server_root := filepath.Dir(os.Args[0])
245 file := filepath.Join(server_root, "db", hhsdb) 257 file := filepath.Join(server_root, hhsdb)
246 f, err := os.Create(file) 258 f, err := os.Create(file)
247 if err != nil { 259 if err != nil {
248 http.NotFound(w, r) 260 http.NotFound(w, r)
249 return 261 return
250 } 262 }
263 defer f.Close()
264
265 b, err := ioutil.ReadAll(r.Body)
266 r.Body.Close()
267 if err != nil {
268 http.NotFound(w, r)
269 return
270 }
271
272 br := bytes.NewReader(b)
273 zr, err := gzip.NewReader(br)
274 if err != nil {
275 http.NotFound(w, r)
276 return
277 }
278 n, err := io.Copy(f, zr)
279
280 if err := zr.Close(); err != nil {
281 http.NotFound(w, r)
282 return
283 }
284
285 w.Write([]byte(fmt.Sprintf("%d bytes are recieved.\n", n)))
286
287 loadDB();
288 }
289
290 /* POST /ui/20200401/0800012345.tgz */
291 func upimage_handler(w http.ResponseWriter, r *http.Request) {
292 if r.Method != http.MethodPost {
293 http.NotFound(w, r)
294 return
295 }
296
297 uri := r.URL.Path[len("/ui/"):]
298 ymd := uri[0:8]
299 tgz := uri[9:]
300
301 server_root := filepath.Dir(os.Args[0])
302 dir := filepath.Join(server_root, "images", ymd)
303
304 if _, err := os.Stat(dir); os.IsNotExist(err) {
305 os.Mkdir(dir, 0644)
306 }
307
308 file := filepath.Join(server_root, "images", ymd, tgz)
309 f, err := os.Create(file)
310 if err != nil {
311 http.NotFound(w, r)
312 return
313 }
314 defer f.Close()
315
251 n, err := io.Copy(f, r.Body) 316 n, err := io.Copy(f, r.Body)
252 if err != nil { 317 if err != nil {
253 http.NotFound(w, r) 318 http.NotFound(w, r)
254 return 319 return
255 } 320 }
256 f.Close()
257 w.Write([]byte(fmt.Sprintf("%d bytes are recieved.\n", n))) 321 w.Write([]byte(fmt.Sprintf("%d bytes are recieved.\n", n)))
258 } 322 }
259 323