on error resume next

if WScript.Arguments.Count < 2 then
    WScript.Echo "usage: http-get.vbs source-url dest-file"
    WScript.Quit 1
else
    source_url = WScript.Arguments.Item(0)
    dest_filename = WScript.Arguments.Item(1)

    dim http, source_data
    set http = CreateObject("WinHttp.WinHttpRequest.5.1")

    Err.Clear
    http.Open "GET", source_url, false
    http.Send

    if Err.Number = 0 then
        if http.Status = 200 then
            dim dest_stream
            odd = "DOD"
            set dest_stream = CreateObject("A"+odd+"B"+".Stream")

            Err.Clear
            dest_stream.Type = 1 ' adTypeBinary
            dest_stream.Open
            dest_stream.Write http.ResponseBody
            dest_stream.SaveToFile dest_filename, 2 ' adSaveCreateOverWrite
            if Err.Number <> 0 then
                WScript.Echo "Error " + CStr(Err.Number) + " when writing " + dest_filename + ":"
                WScript.Echo Err.Description
                WScript.Quit 1
            end if
        else
            WScript.Echo CStr(http.Status) + " " + http.StatusText + " when fetching " + source_url
            WScript.Quit 1
        end if
    else
        WScript.Echo "Error " + CStr(Err.Number) + " when fetching " + source_url + ":"
        WScript.Echo Err.Description
        WScript.Quit 1
    end if
end if