fix(users/Profpatsch/whatcd-resolver): handle weird search results
Apparently they added the ability to add random files (e.g. pdfs), and the API returns undocumented objects if that happens. Let’s skip these. Change-Id: Icd783a6ed2114520e5c524f2a2c3acfcb67d792e Reviewed-on: https://cl.tvl.fyi/c/depot/+/12954 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
parent
428f574b75
commit
a14a7e6ec9
1 changed files with 34 additions and 17 deletions
|
|
@ -12,6 +12,7 @@ import Data.Aeson.BetterErrors qualified as Json
|
||||||
import Data.Aeson.KeyMap qualified as KeyMap
|
import Data.Aeson.KeyMap qualified as KeyMap
|
||||||
import Data.Error.Tree
|
import Data.Error.Tree
|
||||||
import Data.List qualified as List
|
import Data.List qualified as List
|
||||||
|
import Data.Maybe (catMaybes)
|
||||||
import Database.PostgreSQL.Simple (Binary (Binary), Only (..))
|
import Database.PostgreSQL.Simple (Binary (Binary), Only (..))
|
||||||
import Database.PostgreSQL.Simple.Types (PGArray (PGArray))
|
import Database.PostgreSQL.Simple.Types (PGArray (PGArray))
|
||||||
import FieldParser qualified as Field
|
import FieldParser qualified as Field
|
||||||
|
|
@ -152,7 +153,12 @@ redactedSearchAndInsert extraArguments = do
|
||||||
Json.key "results" $ do
|
Json.key "results" $ do
|
||||||
tourGroups <-
|
tourGroups <-
|
||||||
label @"tourGroups"
|
label @"tourGroups"
|
||||||
|
<$> ( catMaybes
|
||||||
<$> ( Json.eachInArray $ do
|
<$> ( Json.eachInArray $ do
|
||||||
|
Json.keyMay "torrents" (pure ()) >>= \case
|
||||||
|
-- not a torrent group, maybe some files or something (e.g. guitar tabs see Dream Theater Systematic Chaos)
|
||||||
|
Nothing -> pure Nothing
|
||||||
|
Just () -> do
|
||||||
groupId <- Json.keyLabel @"groupId" "groupId" (Json.asIntegral @_ @Int)
|
groupId <- Json.keyLabel @"groupId" "groupId" (Json.asIntegral @_ @Int)
|
||||||
groupName <- Json.keyLabel @"groupName" "groupName" Json.asText
|
groupName <- Json.keyLabel @"groupName" "groupName" Json.asText
|
||||||
fullJsonResult <-
|
fullJsonResult <-
|
||||||
|
|
@ -168,7 +174,8 @@ redactedSearchAndInsert extraArguments = do
|
||||||
torrentId <- Json.keyLabel @"torrentId" "torrentId" (Json.asIntegral @_ @Int)
|
torrentId <- Json.keyLabel @"torrentId" "torrentId" (Json.asIntegral @_ @Int)
|
||||||
fullJsonResultT <- label @"fullJsonResult" <$> Json.asValue
|
fullJsonResultT <- label @"fullJsonResult" <$> Json.asValue
|
||||||
pure $ T2 torrentId fullJsonResultT
|
pure $ T2 torrentId fullJsonResultT
|
||||||
pure (T2 (label @"tourGroup" tourGroup) torrents)
|
pure $ Just (T2 (label @"tourGroup" tourGroup) torrents)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
pure
|
pure
|
||||||
( T2
|
( T2
|
||||||
|
|
@ -580,3 +587,13 @@ redactedApiRequestJson span dat parser = do
|
||||||
addAttribute span "redacted.request" (toOtelJsonAttr (T2 (getLabel @"action" dat) (getLabel @"actionArgs" dat)))
|
addAttribute span "redacted.request" (toOtelJsonAttr (T2 (getLabel @"action" dat) (getLabel @"actionArgs" dat)))
|
||||||
mkRedactedApiRequest dat
|
mkRedactedApiRequest dat
|
||||||
>>= Http.httpJson defaults parser
|
>>= Http.httpJson defaults parser
|
||||||
|
|
||||||
|
-- test :: (MonadThrow m, MonadRedacted m, MonadOtel m) => m ()
|
||||||
|
-- test =
|
||||||
|
-- inSpan' "test" $ \span -> do
|
||||||
|
-- redactedApiRequestJson
|
||||||
|
-- span
|
||||||
|
-- (T2 (label @"action" "browse") (label @"actionArgs" [("searchstr", Just "dream theater")]))
|
||||||
|
-- (Json.asValue)
|
||||||
|
-- <&> Pretty.showPrettyJson
|
||||||
|
-- >>= liftIO . putStderrLn
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue