Mercurial > mercurial > hgweb_golang.cgi
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 |