about summary refs log tree commit diff
path: root/users/Profpatsch
diff options
context:
space:
mode:
authorProfpatsch <mail@profpatsch.de>2023-06-19T22·22+0200
committerProfpatsch <mail@profpatsch.de>2023-07-14T08·03+0000
commit98e38339f2b753f5d19ec9ba84b095a189f97e84 (patch)
tree697c98ac5f2633605b00a1e5c0a7a2ac69ec892b /users/Profpatsch
parent07b976ccd89cc8a4b5d0624ee2223d64add4615d (diff)
feat(users/Profpatsch/whatcd-resolver): add initial redacted API r/6414
Change-Id: I3143a932646d61b7661df4e4da4edf24a360f6cc
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8833
Reviewed-by: Profpatsch <mail@profpatsch.de>
Tested-by: BuildkiteCI
Diffstat (limited to 'users/Profpatsch')
-rw-r--r--users/Profpatsch/shell.nix1
-rw-r--r--users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs29
-rw-r--r--users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal1
3 files changed, 31 insertions, 0 deletions
diff --git a/users/Profpatsch/shell.nix b/users/Profpatsch/shell.nix
index ea88c423cb..789f991ffa 100644
--- a/users/Profpatsch/shell.nix
+++ b/users/Profpatsch/shell.nix
@@ -20,6 +20,7 @@ pkgs.mkShell {
       h.pa-label
       h.pa-json
       h.pa-pretty
+      h.pa-run-command
       h.ihp-hsx
       h.PyF
       h.foldl
diff --git a/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs b/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs
index 6fe8f8c77f..0628b9b9ea 100644
--- a/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs
+++ b/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs
@@ -16,6 +16,7 @@ import Data.Map.Strict qualified as Map
 import Data.Pool (Pool)
 import Data.Pool qualified as Pool
 import Data.Text qualified as Text
+import Data.Text.IO qualified as Text
 import Database.PostgreSQL.Simple qualified as Postgres
 import Database.PostgreSQL.Simple.Types qualified as Postgres
 import Database.Postgres.Temp qualified as TmpPg
@@ -24,12 +25,14 @@ import Json qualified
 import Json.Enc (Enc)
 import Json.Enc qualified as Enc
 import Label
+import Network.HTTP.Conduit qualified as Http
 import Network.HTTP.Simple qualified as Http
 import Network.HTTP.Types
 import PossehlAnalyticsPrelude
 import Postgres.Decoder qualified as Dec
 import Postgres.MonadPostgres
 import Pretty
+import RunCommand
 import System.Directory qualified as Dir
 import System.Directory qualified as Xdg
 import System.FilePath ((</>))
@@ -129,6 +132,32 @@ doTransmissionRequest dat req = do
           Left err -> appThrowTree err
     _ -> liftIO $ unwrapIOError $ Left [fmt|Non-200 response: {showPretty resp}|]
 
+redactedSearch advanced = redactedApiRequest (T2 (label @"action" "browse") (label @"actionArgs" ((advanced <&> second Just))))
+
+test =
+  runAppWith $
+    redactedSearch
+      [ ("artistname", "michael jackson"),
+        ("year", "1982"),
+        ("format", "MP3"),
+        ("releasetype", "album"),
+        ("order_by", "year")
+      ]
+      <&> (fmap $ fromMaybe undefined)
+      <&> (Http.getResponseBody)
+      <&> showPrettyJson
+      >>= liftIO . Text.putStrLn
+
+redactedApiRequest dat = do
+  authKey <- runCommandExpect0 "pass" ["internet/redacted/api-keys/whatcd-resolver"]
+  let req =
+        [fmt|https://redacted.ch/ajax.php|]
+          & Http.setRequestMethod "GET"
+          & Http.setQueryString (("action", Just dat.action) : dat.actionArgs)
+          & Http.setRequestHeader "Authorization" [authKey]
+  Http.httpBS req
+    <&> fmap (Json.decodeStrict' @Json.Value)
+
 runAppWith :: AppT IO a -> IO (Either TmpPg.StartError a)
 runAppWith appT = withDb $ \db -> do
   tools <- initMonadTools (label @"envvar" "WHATCD_RESOLVER_TOOLS")
diff --git a/users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal b/users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal
index 6d8fd5bd52..b52ee0b15a 100644
--- a/users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal
+++ b/users/Profpatsch/whatcd-resolver/whatcd-resolver.cabal
@@ -71,6 +71,7 @@ library
         pa-label,
         pa-json,
         pa-field-parser,
+        pa-run-command,
         containers,
         pa-pretty,
         tmp-postgres,