/
service.go
88 lines (74 loc) · 1.86 KB
/
service.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package main
import "net/http"
import "os"
import "log"
import "strings"
import "io/ioutil"
import "github.com/takama/daemon"
type Service struct {
daemon.Daemon
}
var dependencies = []string{"dummy.service"}
var stdlog, errlog *log.Logger
func (service *Service) Manage() (string, error) {
usage := "Usage:image-assistant install | remove | start | stop | status"
if len(os.Args) > 1 {
command := os.Args[1]
switch command {
case "install":
return service.Install()
case "remove":
return service.Remove()
case "start":
return service.Start()
case "stop":
return service.Stop()
case "status":
return service.Status()
default:
return usage, nil
}
}
http.HandleFunc("/save", func(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
url := r.Form["url"][0]
stdlog.Println("Image Url: " + url)
urlParts := strings.Split(url, "/")
var fileName = ""
if r.Form["name"] == nil {
fileName = urlParts[len(urlParts)-1]
} else {
fileName = r.Form["name"][0]
}
resp, _ := http.Get(url)
defer resp.Body.Close()
fileType := strings.Split(resp.Header["Content-Type"][0], "/")[1]
body, _ := ioutil.ReadAll(resp.Body)
ioutil.WriteFile("/Users/gaochenfei/Dropbox/Pictures/"+fileName+"."+fileType, body, 0644)
w.Write([]byte("/Users/gaochenfei/Dropbox/Pictures/" + fileName + "." + fileType))
})
err := http.ListenAndServe(":8080", nil)
if err != nil {
errlog.Println("Server error")
os.Exit(0)
}
return usage, nil
}
func init() {
stdlog = log.New(os.Stdout, "", log.Ldate|log.Ltime)
errlog = log.New(os.Stderr, "", log.Ldate|log.Ltime)
}
func main() {
srv, err := daemon.New("image-assistantd", "image", dependencies...)
if err != nil {
errlog.Println(err)
os.Exit(1)
}
service := &Service{srv}
status, err := service.Manage()
if err != nil {
errlog.Println(err)
os.Exit(1)
}
stdlog.Println(status)
}