main
1using System;
2using System.IO;
3using System.Net;
4using gorilla.utility;
5using Newtonsoft.Json;
6using solidware.financials.messages;
7
8namespace solidware.financials.service.handlers
9{
10 public class GoogleLookupService : StockPriceLookupService
11 {
12 public CurrentStockPrice FindPriceFor(string symbol)
13 {
14 //www.google.com/finance/info?infotype=infoquoteall&q=C,JPM,AIG
15 try
16 {
17 dynamic convert = JsonConvert.DeserializeObject(Open("http://www.google.com/finance/info?infotype=infoquoteall&q={0}".format(symbol)).Remove(0, 4));
18 var item = convert[0];
19 Console.Out.WriteLine(item);
20 var price = MapFrom(item);
21 price.Symbol = symbol;
22 return price;
23 }
24 catch (Exception e)
25 {
26 Console.Out.WriteLine(e);
27 return new CurrentStockPrice {Symbol = symbol};
28 }
29 }
30
31 CurrentStockPrice MapFrom(dynamic item)
32 {
33 return new CurrentStockPrice
34 {
35 Symbol = item.t,
36 Price = item.l,
37 Change = item.c,
38 ChangePercentage = item.cp,
39 High = item.hi,
40 Low = item.lo,
41 Open = item.op,
42 };
43 }
44
45 string Open(string url)
46 {
47 using (var reader = new StreamReader(new WebClient().OpenRead(new Uri(url))))
48 {
49 return reader.ReadToEnd();
50 }
51 }
52
53 /*
54{
55 "id": "666908",
56 "t": "ARX",
57 "e": "TSE",
58 "l": "26.50",
59 "l_cur": "CA$26.50",
60 "s": "0",
61 "ltt": "4:00PM EDT",
62 "lt": "Apr 1, 4:00PM EDT",
63 "c": "+0.15",
64 "cp": "0.57",
65 "ccol": "chg",
66 "eo": "",
67 "delay": "15",
68 "op": "26.49",
69 "hi": "26.65",
70 "lo": "26.31",
71 "vo": "426,774.00",
72 "avvo": "1.60M",
73 "hi52": "28.67",
74 "lo52": "18.77",
75 "mc": "7.55B",
76 "pe": "20.35",
77 "fwpe": "",
78 "beta": "0.69",
79 "eps": "1.30",
80 "name": "ARC Resources Ltd",
81 "type": "Company"
82}
83 */
84 }
85}