not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
5.5 KiB

  1. //* comment *//
  2. Copyright (C) 2015 Sam Parkinson
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. //* globals *//
  14. var financeMashapeKey = '3Rfxc7fwp2mshJxgtDxKSueYna8Ap1qZfAcjsn2hjpuWPuBCrI';
  15. //* block:currencyrate *//
  16. var currencyRate = new ProtoBlock('currencyrate');
  17. currencyRate.palette = palettes.dict['external'];
  18. blocks.protoBlockDict['currencyrate'] = currencyRate;
  19. currencyRate.extraWidth = 20;
  20. currencyRate.staticLabels.push(_('currency'), _('from'), _('to'));
  21. currencyRate.adjustWidthToLabel();
  22. currencyRate.twoArgMathBlock();
  23. currencyRate.dockTypes[1] = 'anyin';
  24. currencyRate.dockTypes[2] = 'anyin';
  25. currencyRate.defaults.push('AUD', 'USD');
  26. //* arg:currencyrate *//
  27. var block = logo.blocks.blockList[blk];
  28. var conns = block.connections;
  29. var from = logo.parseArg(logo, turtle, conns[1]);
  30. var to = logo.parseArg(logo, turtle, conns[2]);
  31. var apiURL = 'https://currency-exchange.p.mashape.com/exchange?from=' + from + '&q=1.0&to=' + to;
  32. if (block.cacheFor === apiURL && block.cache !== undefined) {
  33. var response = block.cache;
  34. } else {
  35. try {
  36. var request = new XMLHttpRequest();
  37. request.open('GET', apiURL, false);
  38. request.setRequestHeader('X-Mashape-Authorization', financeMashapeKey);
  39. request.send(null);
  40. var response = request.responseText;
  41. block.cacheFor = apiURL;
  42. block.cache = response;
  43. } catch (e) {
  44. logo.errorMsg('Could not connect to Currency API', blk);
  45. }
  46. }
  47. block.value = parseFloat(response);
  48. //* block:stockprice *//
  49. var stockprice = new ProtoBlock('stockprice');
  50. stockprice.palette = palettes.dict['external'];
  51. blocks.protoBlockDict['stockprice'] = stockprice;
  52. stockprice.staticLabels.push(_('stock price'));
  53. stockprice.adjustWidthToLabel();
  54. stockprice.oneArgMathBlock();
  55. stockprice.dockTypes[1] = 'anyin';
  56. stockprice.defaults.push('GOOG');
  57. //* arg:stockprice *//
  58. var block = logo.blocks.blockList[blk];
  59. var conns = block.connections;
  60. var stock = logo.parseArg(logo, turtle, conns[1]);
  61. var apiURL = 'https://cors-anywhere.herokuapp.com/dev.markitondemand.com/Api/v2/Quote/json?symbol=' + stock;
  62. if (block.cacheFor === apiURL && block.cache !== undefined) {
  63. var response = block.cache;
  64. } else {
  65. try {
  66. var request = new XMLHttpRequest();
  67. request.open('GET', apiURL, false);
  68. request.send(null);
  69. var response = request.responseText;
  70. block.cacheFor = apiURL;
  71. block.cache = response;
  72. } catch (e) {
  73. logo.errorMsg('Could not connect to Markit On Demand API', blk);
  74. }
  75. }
  76. j = JSON.parse(response);
  77. if (j.Status !== 'SUCCESS') {
  78. if (j.Message.indexOf('No symbol matches') !== -1) {
  79. logo.errorMsg('No stock symbol %s found. Try another, eg. GOOG, AAPL'.replace('%s', stock), blk);
  80. } else {
  81. logo.errorMsg(j.Message, blk);
  82. }
  83. } else {
  84. block.value = j.LastPrice;
  85. }
  86. //* palette-icon:external *//
  87. <svg height="55" viewBox="0 0 55 55" width="55" xmlns="http://www.w3.org/2000/svg"><g fill="#59f" stroke="#3771c8" stroke-width="1.5" transform="matrix(.46522973 0 0 .46522973 4.261775 4.215252)"><path d="m86.2 50v0 0c0-9.7-3.8-18.8-10.7-25.7-6.8-6.8-15.9-10.5-25.5-10.5h-.1c-9.7 0-18.8 3.8-25.7 10.7-.4.4-.8.8-1.1 1.2v0c-6.1 6.7-9.4 15.3-9.4 24.4 0 9.2 3.5 17.7 9.2 24.1v0c .1.2.3.4.6.6 6.6 7.1 16 11.5 26.5 11.5v0 0 0 0 0 0c5.5 0 10.9-1.2 15.8-3.6 1-.5 1.4-1.7.9-2.7-.5-1-1.7-1.4-2.7-.9-3.3 1.6-6.8 2.6-10.4 3l2.9-4.8c4.7-7.8 7.3-16.5 7.6-25.2h18l-.3 3.3c-.2 1.1-.4 2.1-.7 3.2-.3 1.1.3 2.2 1.4 2.5 1.1.3 2.2-.3 2.5-1.4.3-1.2.6-2.4.8-3.6.3-2.1.4-4.1.4-6.1zm-39.3 25.1c-1.3-2.1-2.3-4.2-3.3-6.5 4.3-.6 8.6-.6 12.7 0-.9 2.2-2 4.4-3.3 6.5l-3 5.2zm-3.4 2.1l2.9 4.8c-7-.8-13.4-3.9-18.3-8.5 3.6-1.9 7.6-3.2 11.5-4.1 1.1 2.7 2.4 5.3 3.9 7.8zm-18.3-6.7c-4.2-5.1-6.9-11.5-7.4-18.5h18.1c.2 4.6 1 9.2 2.4 13.6-4.6 1.1-9 2.7-13.1 4.9zm-.1-41c4.2 2.2 8.6 3.9 13.1 4.9-1.4 4.5-2.2 9.1-2.4 13.7h-18c .4-6.9 3-13.4 7.3-18.6zm24.9-9.8l3.1 5.2c1.3 2.1 2.3 4.2 3.3 6.4-4.2.5-8.5.5-12.7 0 .9-2.2 2-4.4 3.3-6.4zm6.5 3.1l-2.9-4.8c6.9.8 13.3 3.7 18.4 8.5-3.7 1.9-7.6 3.3-11.6 4.1-1.1-2.7-2.4-5.3-3.9-7.8zm-13 0c-1.5 2.5-2.8 5.1-3.9 7.8-4-.9-7.9-2.2-11.6-4.1 5.1-4.8 11.5-7.7 18.4-8.5zm-1.3 12.3c2.6.4 5.2.6 7.8.6 2.6 0 5.2-.2 7.7-.6 1.4 4.2 2.1 8.5 2.3 12.9h-20.1c.2-4.3 1-8.7 2.3-12.9zm19.5-.7c4.5-1 8.9-2.7 13.1-4.9 4.4 5.3 6.9 11.7 7.3 18.5h-18c-.2-4.6-1-9.2-2.4-13.6zm-3.9 30.4c-5-.8-10.3-.8-15.5 0-1.4-4.2-2.1-8.5-2.3-12.8h20.1c-.2 4.3-1 8.7-2.3 12.8z"/><g transform="translate(-.125 .125)"><path d="m67.8 66.2h10.2l-1.6-1.6c-.4-.4-.6-.9-.6-1.4 0-.5.2-1 .6-1.4.8-.8 2-.8 2.8 0l5 5v0 0 0 0 0 0c .3.4.5.8.6 1.3v.4c0 .4-.2.7-.5 1l-.2.2c-.4.3-.8.5-1.2.5v0h-.1-15c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2z"/><path d="m84.7 74.239601c0 1.1-.9 2-2 2h-10.1l1.6 1.6c.4.4.6.9.6 1.4 0 .5-.2 1-.6 1.4-.4.4-.9.6-1.4.6-.5 0-1-.2-1.4-.6l-5-5v0 0 0 0 0 0c-.3-.4-.5-.8-.6-1.3v-.4c0-.4.2-.7.5-1l .2-.2c.4-.3.8-.5 1.2-.5v0h .1 15c1 0 1.9.9 1.9 2z"/></g></g></svg>
  88. //* palette-fill:external *// #59f
  89. //* palette-stroke:external *// #3771c8
  90. //* palette-highlight:external *// #9DC4FF
  91. //* palette-stroke-highlight:external *// #000000