@@ -81,10 +81,13 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
81
81
82
82
if err != nil {
83
83
errorHandler (w , r , status )
84
+
84
85
return
85
86
}
86
87
87
- if err := postTemplate .ExecuteTemplate (w , "layout" , post ); err != nil {
88
+ err := postTemplate .ExecuteTemplate (w , "layout" , post )
89
+
90
+ if err != nil {
88
91
log .Println (err .Error ())
89
92
errorHandler (w , r , 500 )
90
93
}
@@ -93,9 +96,13 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
93
96
func errorHandler (w http.ResponseWriter , r * http.Request , status int ) {
94
97
log .Printf ("error %d %s %s\n " , status , r .RemoteAddr , r .URL .Path )
95
98
w .WriteHeader (status )
96
- if err := errorTemplate .ExecuteTemplate (w , "layout" , map [string ]interface {}{"Error" : http .StatusText (status ), "Status" : status }); err != nil {
99
+
100
+ err := errorTemplate .ExecuteTemplate (w , "layout" , map [string ]interface {}{"Error" : http .StatusText (status ), "Status" : status })
101
+
102
+ if err != nil {
97
103
log .Println (err .Error ())
98
104
http .Error (w , http .StatusText (500 ), 500 )
105
+
99
106
return
100
107
}
101
108
}
@@ -108,8 +115,10 @@ func noDirListing(h http.Handler) http.HandlerFunc {
108
115
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
109
116
if strings .HasSuffix (r .URL .Path , "/" ) || r .URL .Path == "" {
110
117
http .NotFound (w , r )
118
+
111
119
return
112
120
}
121
+
113
122
h .ServeHTTP (w , r )
114
123
})
115
124
}
@@ -146,6 +155,7 @@ type postArray struct {
146
155
func newPostArray () * postArray {
147
156
p := postArray {}
148
157
p .Items = make (map [string ]post )
158
+
149
159
return & p
150
160
}
151
161
@@ -154,18 +164,23 @@ func newPostArray() *postArray {
154
164
// Если путь не существует или является каталогом, то возвращаем ошибку
155
165
func (p * postArray ) Get (md string ) (post , int , error ) {
156
166
info , err := os .Stat (md )
167
+
157
168
if err != nil {
158
169
if os .IsNotExist (err ) {
159
170
// файл не существует
160
171
return post {}, 404 , err
161
172
}
173
+
162
174
return post {}, 500 , err
163
175
}
176
+
164
177
if info .IsDir () {
165
178
// не файл, а папка
166
179
return post {}, 404 , fmt .Errorf ("dir" )
167
180
}
181
+
168
182
val , ok := p .Items [md ]
183
+
169
184
if ! ok || (ok && val .ModTime != info .ModTime ().UnixNano ()) {
170
185
p .RLock ()
171
186
defer p .RUnlock ()
@@ -176,6 +191,8 @@ func (p *postArray) Get(md string) (post, int, error) {
176
191
body = string (blackfriday .MarkdownCommon ([]byte (body )))
177
192
p .Items [md ] = post {title , template .HTML (body ), info .ModTime ().UnixNano ()}
178
193
}
194
+
179
195
post := p .Items [md ]
196
+
180
197
return post , 200 , nil
181
198
}
0 commit comments