commit fe419d7705c4359dd66046302c7bb02ac26df194 Author: Fabien Freling Date: Wed May 6 00:15:15 2020 +0200 search steam store diff --git a/dune-project b/dune-project new file mode 100644 index 0000000..e004d37 --- /dev/null +++ b/dune-project @@ -0,0 +1,2 @@ +(lang dune 2.5) +(name vg-store) diff --git a/src/dune b/src/dune new file mode 100644 index 0000000..5fe46de --- /dev/null +++ b/src/dune @@ -0,0 +1,3 @@ +(executable + (name main) + (libraries mechaml)) diff --git a/src/main.ml b/src/main.ml new file mode 100644 index 0000000..17c20cf --- /dev/null +++ b/src/main.ml @@ -0,0 +1,28 @@ +open Mechaml +module M = Agent.Monad +open M.Infix + +let require msg = function + | Some a -> a + | None -> failwith msg + +let steam_search query = + let url = "https://store.steampowered.com/" in + Agent.get url + >|= (fun result -> + let form = result + |> Agent.HttpResponse.page + |> Page.form_with "[id=searchform]" + |> require "search form not found" in + let field = form + |> Page.Form.field_with "[name=term]" + |> require "q field not found" in + Page.Form.Field.set form field query) + >>= Agent.submit + >>= (fun response -> + response + |> Agent.HttpResponse.content + |> M.save_content "steam-result.html") + +let _ = + M.run (Agent.init ()) (steam_search "planet") diff --git a/vg-store.opam b/vg-store.opam new file mode 100644 index 0000000..8f26cde --- /dev/null +++ b/vg-store.opam @@ -0,0 +1,18 @@ +opam-version: "2.0" +name: "vg-store" +version: "~dev" +synopsis: "Quickly check games on multiple stores" +maintainer: "Fabien Freling " +authors: "Fabien Freling " +license: "MIT" +homepage: "http://code.ffreling.com/fabs/vg-store" +bug-reports: "http://code.ffreling.com/fabs/vg-store/issues" +depends: [ + "mechaml" + "lwt_ssl" +] +build: ["dune" "build" "-p" name "-j" jobs] +dev-repo: "git+http://code.ffreling.com/fabs/vg-store" +url { + src: "http://code.ffreling.com/fabs/vg-store" +}