@@ -12,6 +12,7 @@ import (
1212 "path/filepath"
1313 "runtime"
1414 "strings"
15+ "time"
1516
1617 "github.com/pgaskin/kepubify/v4/kepub"
1718)
@@ -22,6 +23,11 @@ const UPLOAD_PATH_KOBO = "/mnt/onboard/kobofileserver"
2223var uploadPath string
2324var refreshScript string
2425
26+ type RequestData struct {
27+ converted bool
28+ fileName string
29+ }
30+
2531func responseString (msg string ) string {
2632 return fmt .Sprintf ("%s" , msg )
2733}
@@ -76,18 +82,16 @@ func notifyKoboRefresh() error {
7682 return nil
7783}
7884
79- func uploadFile (w http.ResponseWriter , r * http.Request ) {
85+ func saveFile (r * http.Request ) (RequestData , error ) {
86+ var data RequestData
87+
8088 if r .Method != "POST" {
81- s := responseString ("Error: please use HTTP POST method to upload file" )
82- fmt .Fprintf (w , s )
83- return
89+ return data , fmt .Errorf ("please use HTTP POST method to upload file" )
8490 }
8591
8692 err := r .ParseMultipartForm (32 << 20 )
8793 if err != nil {
88- s := responseString (fmt .Sprintf ("Error: (%v)" , err ))
89- fmt .Fprintf (w , s )
90- return
94+ return data , err
9195 }
9296
9397 convertedStr := r .FormValue ("upload-converted" )
@@ -98,40 +102,63 @@ func uploadFile(w http.ResponseWriter, r *http.Request) {
98102
99103 file , handler , err := r .FormFile ("upload-file" )
100104 if err != nil {
101- s := responseString (fmt .Sprintf ("Error: (%v)" , err ))
102- fmt .Fprintf (w , s )
103- return
105+ return data , err
104106 }
105107 defer file .Close ()
106108
107109 fmt .Printf ("uploadFile (%s) (%s) \n " , handler .Filename , convertedStr )
108110
109111 fileName := path .Join (uploadPath , handler .Filename )
110112 f , err := os .OpenFile (fileName , os .O_WRONLY | os .O_CREATE , 0666 )
113+ if err != nil {
114+ return data , err
115+ }
116+
117+ io .Copy (f , file )
118+ f .Close ()
119+
120+ data .converted = converted
121+ data .fileName = fileName
122+
123+ return data , nil
124+ }
125+
126+ func uploadFile (w http.ResponseWriter , r * http.Request ) {
127+ t1 := time .Now ()
128+
129+ requestData , err := saveFile (r )
111130 if err != nil {
112131 s := responseString (fmt .Sprintf ("Error: (%v)" , err ))
113132 fmt .Fprintf (w , s )
114133 return
115134 }
116135
117- io .Copy (f , file )
118- f .Close ()
136+ t2 := time .Now ()
119137
120- finalFile , err := convertEPUB (converted , fileName )
138+ finalFile , err := convertEPUB (requestData . converted , requestData . fileName )
121139 if err != nil {
122140 s := responseString (fmt .Sprintf ("Error: (%v)" , err ))
123141 fmt .Fprintf (w , s )
124142 return
125143 }
126144
145+ t3 := time .Now ()
146+
127147 err = notifyKoboRefresh ()
128148 if err != nil {
129149 s := responseString (fmt .Sprintf ("Error: (%v)" , err ))
130150 fmt .Fprintf (w , s )
131151 return
132152 }
133153
134- s := responseString (fmt .Sprintf ("Uploading (%s) is successful." , finalFile ))
154+ s := responseString (
155+ fmt .Sprintf (
156+ "Uploading (%s) is successful, saveFile(%v), convertFile(%v)" ,
157+ finalFile ,
158+ t2 .Sub (t1 ),
159+ t3 .Sub (t2 ),
160+ ),
161+ )
135162 fmt .Fprintf (w , s )
136163}
137164
0 commit comments