Skip to content

Commit 7c4eb3b

Browse files
committed
Resolve weird 404 on /lastest pages
Fix elm/elm-lang.org#780
1 parent f235281 commit 7c4eb3b

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

src/backend/Main.hs

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,12 @@ serve token memory =
129129
]
130130

131131

132-
version :: Route (Pkg.Version -> a) a
132+
version :: Route (Maybe Pkg.Version -> a) a
133133
version =
134-
Router.custom Pkg.versionFromText
134+
Router.oneOf
135+
[ s "latest" ==> Nothing
136+
, Router.custom Pkg.versionFromText ==> Just
137+
]
135138

136139

137140
data Info
@@ -176,24 +179,26 @@ serveReleases author project =
176179
serveFile (Path.releases (Pkg.Name author project))
177180

178181

179-
serveVersion :: Memory.Memory -> Text -> Text -> Pkg.Version -> Info -> S.Snap ()
180-
serveVersion memory author project version info =
182+
serveVersion :: Memory.Memory -> Text -> Text -> Maybe Pkg.Version -> Info -> S.Snap ()
183+
serveVersion memory author project maybeVersion info =
181184
do let name = Pkg.Name author project
182185
pkgs <- Memory.getPackages memory
183186
case Map.lookup name pkgs of
184187
Nothing ->
185188
S.pass
186189

187190
Just (Memory.Summary versions _ _) ->
188-
if notElem version versions
189-
then S.pass
190-
else
191-
case info of
192-
Readme ->
193-
ServeFile.version name version Nothing
191+
case verifyVersion maybeVersion versions of
192+
Nothing ->
193+
S.pass
194194

195-
Module asset ->
196-
serveVersionHelp name version asset
195+
Just version ->
196+
case info of
197+
Readme ->
198+
ServeFile.version name version Nothing
199+
200+
Module asset ->
201+
serveVersionHelp name version asset
197202

198203

199204

@@ -219,3 +224,20 @@ serveVersionHelp name version asset =
219224

220225
Nothing ->
221226
S.pass
227+
228+
229+
verifyVersion :: Maybe Pkg.Version -> [Pkg.Version] -> Maybe Pkg.Version
230+
verifyVersion maybeVersion versions =
231+
case versions of
232+
[] ->
233+
Nothing
234+
235+
_:_ ->
236+
case maybeVersion of
237+
Nothing ->
238+
Just (maximum versions)
239+
240+
Just version ->
241+
if elem version versions
242+
then Just version
243+
else Nothing

0 commit comments

Comments
 (0)