Skip to content

Instantly share code, notes, and snippets.

@dsyme
Last active November 1, 2022 18:11
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save dsyme/9b18608b78dccf92ba33 to your computer and use it in GitHub Desktop.
Save dsyme/9b18608b78dccf92ba33 to your computer and use it in GitHub Desktop.
Working self-contained getting-started sample for Suave Web Scripting
//==========================================
// Working fully self-contained getting-started example for Suave Web Server scripting
//
// Note you don't need to have _anything_ installed before starting with this script. Nothing
// but F# Interactive and this script.
//
// This script fetches the Paket.exe component which is referenced later in the script.
// Initially the #r "paket.exe" reference is shown as unresolved. Once it has been
// downloaded by the user (by executing the first part of the script) the reference
// shows as resolved and can be used.
//
// Paket is then used to fetch a set of F# packages, which are then used later in the script.
//
//------------------------------------------
// Step 0. Boilerplate to get the paket.exe tool
open System
open System.IO
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
if not (File.Exists "paket.exe") then
let url = "https://github.com/fsprojects/Paket/releases/download/0.26.3/paket.exe"
use wc = new Net.WebClient()
let tmp = Path.GetTempFileName()
wc.DownloadFile(url, tmp);
File.Move(tmp,Path.GetFileName url)
// Step 1. Resolve and install the packages
#r "paket.exe"
Paket.Scripting.Install """
source https://nuget.org/api/v2
nuget Suave 0.16.0
nuget FSharp.Data
nuget FSharp.Charting
""";;
// Step 2. Use the packages
#r "packages/Suave/lib/Suave.dll"
#r "packages/FSharp.Data/lib/net40/FSharp.Data.dll"
#r "packages/FSharp.Charting/lib/net40/FSharp.Charting.dll"
let ctxt = FSharp.Data.WorldBankData.GetDataContext()
let data = ctxt.Countries.Algeria.Indicators.``GDP (current US$)``
open Suave // always open suave
open Suave.Http.Successful // for OK-result
open Suave.Web // for config
web_server default_config (OK (sprintf "Hello World! In 2010 Algeria earned %f " data.[2010]))
@forki
Copy link

forki commented Feb 2, 2015

@moodmosaic
Copy link

Awesome! Here's the same gist using Paket 0.26.3, resulting into less lines of code.

@forki
Copy link

forki commented Feb 19, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment