### https://api.coindesk.com/v1/bpi/historical/close.json?start=2017-09-28&end=2017-12-25
read_bitcoin_price_as_xts<-function(start=as.character(seq(as.Date(Sys.Date()),length=90,by="-1 days"))[90],end=Sys.Date(),currency="USD")
{
 my_json_url<-paste0("https://api.coindesk.com/v1/bpi/historical/close.json?start=",
                     start,"&end=",end,"&currency=",currency)
 my_con<-file(my_json_url,"r")
 my_txt<-readLines(my_con,-1,warn=FALSE)
 close(my_con)
 
 my_txt2<-strsplit(strsplit(my_txt,"[{]")[[1]][3],"[}]")[[1]][1]
 my_close<-unlist(lapply(as.list(strsplit(my_txt2,"[,]")[[1]]),function(x) {strsplit(x,"[:]")[[1]][2]}))
 my_date<-gsub("\"","",unlist(lapply(as.list(strsplit(my_txt2,"[,]")[[1]]),function(x) {strsplit(x,"[:]")[[1]][1]})))
 
 bitcoin_xts<-xts(as.numeric(my_close),order.by=as.Date(my_date))
 return(bitcoin_xts)
}
available_bitcoin_currency_rate<-function()
{
  my_json_url<-"https://api.coindesk.com/v1/bpi/supported-currencies.json"
  my_con<-file(my_json_url,"r")
  my_txt<-readLines(my_con,-1,warn=FALSE)
  close(my_con)
  
  my_x<-strsplit(my_txt,"[}][,][{]")[[1]]
  my_currency<-unlist(lapply(as.list(my_x),function(x) {strsplit(strsplit(x,"[,]")[[1]][1],"[:]")[[1]][2]}))
  my_country<-unlist(lapply(as.list(my_x),function(x) {gsub("\"","",strsplit(x,"[,]\"country\"[:]\"")[[1]][2])}))
  
  my_currency<-gsub("\"","",my_currency)
  my_country<-gsub("[}]]","",my_country)
  return(data.frame(Country=my_country,Currency_Symbol=my_currency))
}
getBitcoinLastClose<-function(close_date=seq(as.Date(Sys.Date()),length=2,by="-1 days")[2],currency="USD")
{
  BTC<-read_bitcoin_price_as_xts(start=close_date,end=close_date,currency=currency)
  return(BTC)
}
getBitcoinQuote<-function(currency="USD")
{
  my_source<-"Powered by CoinDesk.  See https://www.coindesk.com/price/"
  ### EUR-Euro, GBP-British Pound Sterling
  my_json_url<-paste0("https://api.coindesk.com/v1/bpi/currentprice/",currency,".json")
  my_con<-file(my_json_url,"r")
  my_txt<-readLines(my_con,-1,warn=FALSE)
  close(my_con)
  
  my_time<-strsplit(strsplit(my_txt,"\"time\"[:][{]\"updated\"[:]\"")[[1]][2]," UTC")[[1]][1]
  my_date<-format(as.Date(substr(my_time,1,12),"%b %d, %Y"),"%Y-%m-%d")
  my_clock<-substr(my_time,nchar(my_time)-7,nchar(my_time))
  my_quote<-as.numeric(gsub("[,]","",strsplit(strsplit(my_txt,paste0("[:][{]\"code\"[:]\"",currency,"\"[,]\"rate\"[:]\""))[[1]][2],"\"[,]")[[1]][1]))
  my_description<-strsplit(strsplit(strsplit(my_txt,paste0("[:][{]\"code\"[:]\"",currency,"\"[,]\"rate\"[:]\""))[[1]][2],
                                    "description\"[:]\"")[[1]][2],"\"[,]")[[1]][1]
  
  last_close<-as.numeric(getBitcoinLastClose(currency=currency)[1,1])
  my_change<-(my_quote-last_close)/last_close
  my_df<-data.frame(Date=my_date,Time=my_clock,Price=my_quote,Change=my_change,Currency_Symbol=currency,Country=my_description,Source=my_source)
  return(my_df)
}