CoinExchange.io のgetmarkets APIをPowerShelld呼び出す方法の記事になります。
CoinExchange.io へのリンク
以下、CoinExchange.io API v1 Referenceのgetmarkets APIの抜粋です。
Get Markets This endpoint retrieves all markets.
HTTP Request GET https://www.coinexchange.io/api/v1/getmarkets
‘getmarkets’ returns JSON structured like this:
{
"success": "1",
"request": "/api/v1/public/getmarkets",
"message": "",
"result": [
{
"MarketID": "1",
"MarketAssetName": "Megacoin",
"MarketAssetCode": "MEC",
"MarketAssetID": "3",
"MarketAssetType": "currency",
"BaseCurrency": "Bitcoin",
"BaseCurrencyCode": "BTC",
"BaseCurrencyID": "1",
"Active": true
},
{
"MarketID": "3",
"MarketAssetName": "Litecoin",
"MarketAssetCode": "LTC",
"MarketAssetID": "2",
"MarketAssetType": "currency",
"BaseCurrency": "Bitcoin",
"BaseCurrencyCode": "BTC",
"BaseCurrencyID": "1",
"Active": true
}
]
}
以下のURLにブラウザでアクセスしてみます。
FirefoxだとJSON形式で確認することができます。
実際に、CoinExchange.io のgetmarketsをInvoke-RestMethodコマンドレットを使用して呼び出してみます。
PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:\> $base_url = "https://www.coinexchange.io/api/" PS C:\> $version = "v1" PS C:\> $method = "getmarkets"
PS C:\> $response = Invoke-RestMethod -UseBasicParsing "${base_url}${version}/$method"PS C:\> $response
success request message result
------- ------- ------- ------
1 /api/v1/getmarkets {@{MarketID=18; MarketAssetName=Litecoin; MarketAssetCode=LTC; MarketAssetID=2; M...上記で取得し、$responseに格納した値を操作してみます。
PS C:\> $response
success request message result
------- ------- ------- ------
1 /api/v1/getmarkets {@{MarketID=18; MarketAssetName=Litecoin; MarketAssetCode=LTC; MarketAssetID=2; M...PS C:\> $response.success 1 PS C:\> $response.request /api/v1/getmarkets PS C:\> $response.message
PS C:\> $response.result.count 823
PS C:\> $response.result[0] MarketID : 18 MarketAssetName : Litecoin MarketAssetCode : LTC MarketAssetID : 2 MarketAssetType : currency BaseCurrency : Bitcoin BaseCurrencyCode : BTC BaseCurrencyID : 1 Active : True
PS C:\> $response.result[822] MarketID : 849 MarketAssetName : Sophos MarketAssetCode : SOPH MarketAssetID : 623 MarketAssetType : ethereum_asset BaseCurrency : Ethereum BaseCurrencyCode : ETH BaseCurrencyID : 70 Active : False
PS C:\> $response.result | % {$_.MarketAssetName} | Sort-Object | Get-Unique | Select-Object -First 10
imbrex
Accelerator
AcesCoin
ACoin
Adcoin
Adshares
Adzcoin
AgriNovusCoin
AkuyaCoin
ALIS上記では、Invoke-RestMethodにてJSONをPowerShellで扱いやすい状態に変換してくれますが、
Webサーバから返却された値を変換せずに取得したい場合は、Invoke-WebRequestコマンドレットを使用します。
また、取得後にJSONをPowerShellで扱いやすいオブジェクトに変換するには、ConvertFrom-Jsonコマンドレットを使用します。
以下に実行例を記します。
PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS C:\> $base_url = "https://www.coinexchange.io/api/" PS C:\> $version = "v1" PS C:\> $method = "getmarkets"
PS C:\> $response = Invoke-WebRequest -UseBasicParsing "${base_url}${version}/$method"PS C:\> $response
StatusCode : 200
StatusDescription : OK
Content : {"success":"1","request":"\/api\/v1\/getmarkets","message":"","result":[{"MarketID":"18","MarketAss
etName":"Litecoin","MarketAssetCode":"LTC","MarketAssetID":"2","MarketAssetType":"currency","BaseCu
rr...
RawContent : HTTP/1.1 200 OK
Transfer-Encoding: chunked
Connection: keep-alive
x-frame-options: SAMEORIGIN
Cache-Control: no-cache
Content-Type: application/json
Date: Wed, 30 May 2018 14:08:28 GMT
Set-Cook...
Forms :
Headers : {[Transfer-Encoding, chunked], [Connection, keep-alive], [x-frame-options, SAMEORIGIN], [Cache-Cont
rol, no-cache]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 174298PS C:\> $response.StatusCode 200 PS C:\> $response.Headers.'Content-Type' application/json
PS C:\> $json = $response.Content | ConvertFrom-Json
PS C:\> $json
success request message result
------- ------- ------- ------
1 /api/v1/getmarkets {@{MarketID=18; MarketAssetName=Litecoin; MarketAssetCode=LTC; MarketAssetID=2; M...
上記のInvoke-RestMethodと同じ状態となります。上記のコマンドレットを実行すると、APIサーバとのやり取りのプログレスメッセージが表示されます。
これを非表示にしたい場合は、以下のようにしてください。
非表示にするには、$ProgressPreferenceにSilentlyContinueを設定します。
変更前は以下のように Continue が設定されています。
PS C:\> $ProgressPreference Continue
非表示にするには、以下のように変更します。
PS C:\> $ProgressPreference = "SilentlyContinue"
以上、PowerShellを使って、htmlinsert(): The given local file does not exist or is not readable.の getmarkets APIを呼び出す方法でした。