REST API を呼び出して、最新のビットコイン価格を米ドルとユーロで返す DLL を構築します。
広範なソリューション (MyApp4Lib) を構成する 4 つのプログラムがあります。このサンプル コードを入力して構築します。
次の 2 つの DLL が作成されます。
- MyApp4Lib.dll
- RestSharp.dll
手順
-
メソッドのテストに使用するコードをコンパイルします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MyApp4Lib;
namespace MyApp4Test
{
class Program // Test program for the classes
{
static void Main(string[] args)
{
VisibleBotMethods vbm = new VisibleBotMethods();
String UsdPrice = vbm.GetPriceOfBitcoin("usd");
Console.WriteLine("\nPrice of Bitcoin in USD: " + UsdPrice);
Console.ReadKey();
}
}
}
-
REST 呼び出しを調整してビットコイン価格を取得するコードをコンパイルします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyApp4Lib
{
public class VisibleBotMethods
{
public String GetPriceOfBitcoin(String Currency)
{
// Make GET call -- the Currency is the variable:
// usd for $Dollars, eur for Euros
String URL = "https://api.cryptonator.com/api/ticker/btc-" + Currency;
// Instantiate objects
RestUtils ru = new RestUtils();
JsonUtils ju = new JsonUtils();
// Make the REST call and return the JSON response
String JsonResp = ru.CallRestGETNoAuth(URL);
// Retrieve just the price from the JSON as a String
String BCPrice = ju.GetDataFromJsonResponse(JsonResp);
return BCPrice;
}
}
}
-
REST 呼び出しを行うメソッドをコンパイルします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace MyApp4Lib
{
public class RestUtils
{
public String CallRestGETNoAuth(String URL)
{
// Setting up a web request on the URL that we pass as a parameter,
// specifying a GET request for a JSON response
System.Net.HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
httpWebRequest.ContentType = "text/json";
httpWebRequest.Method = "GET";
// Submitting the request, getting the response, turning it into a string,
// and returning the response
try
{
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new System.IO.StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
return result;
}
}
catch (System.Net.WebException e) // Catch error if URL is not valid
{
return "Error:" + e.Message;
}
}
}
}
-
JSON のレスポンスを処理してビットコイン価格を返すコードをコンパイルします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyApp4Lib
{
class JsonUtils // Includes methods to process JSON
{
public String GetDataFromJsonResponse(String JsonResp)
{
RestSharp.RestResponse response = new RestSharp.RestResponse();
response.Content = JsonResp;
// Turning JSON structure into object / class structure
JsonDeserializer deserial = new JsonDeserializer();
StdJsonResponseForCurrCheck x = deserial.Deserialize<StdJsonResponseForCurrCheck>(response);
String Resp = "";
// Identifying price within the class structure, and then return it
Resp = x.ticker.price;
return Resp;
}
}
// Taking JSON response and turning it into classes
public class Ticker
{
public string @base { get; set; }
public string target { get; set; }
public string price { get; set; }
public string volume { get; set; }
public string change { get; set; }
}
public class StdJsonResponseForCurrCheck
{
public Ticker ticker { get; set; }
public int timestamp { get; set; }
public bool success { get; set; }
public string error { get; set; }
}
}
次のステップ
このタスクで作成した DLL を「高度な MetaBot を作成」の MetaBot に追加します。