#!/bin/env gxi (import :std/net/request :std/format :std/xml :std/text/json) #| Yahoo Finance Headers headers: '( ("x-rapidapi-host" . "apidojo-yahoo-finance-v1.p.rapidapi.com") ("x-rapidapi-key" . "98c32048f8mshe6f4d8a686ddce9p18cc5ajsn8b8888e7e256") ) |# ; Declare the file from which we'll load our stockminder configuration ; Things like stock symbols, favourite functions, timing preferences, etc. (define-values (stockminder-config stocklist output-file) (values (open-input-file "stocklist.conf") ; Initialize our stocklist so we can throw stuff in there after we parse ; the config file. `() (open-output-file "test.out") ) ) ; The procedure we'll use to iterate through config values and add symbols ; to our stocklist (define read-config (lambda (config-file) (let read-loop ((config-chomp (read config-file))) (if (eof-object? config-chomp) (close-input-port config-file) (and (set! stocklist (append stocklist `(,config-chomp))) (read-loop (read config-file)) ) ) ) )) ; Now the business end; parse the config file (read-config stockminder-config) (define-values (api-function api-url api-key) (values "TIME_SERIES_DAILY" "https://www.alphavantage.co/" "EC4C0NRKZAK1Q2UG" ) ) (let ((stock-symbols stocklist)) (map (lambda (x) (display (string-append api-url "query?function=" api-function "&symbol=" (symbol->string x) "&apikey=" api-key "\n"))) stock-symbols ) ) (let ((test-input-file (open-input-file "test.json")) (foo "bar") ) (write-json (read-json test-input-file)) (close-input-port test-input-file) )