2014年5月10日土曜日

groovyとPushBulletを使用してモバイル機器にメッセージを送信する

groovyとPushBulletを使用してモバイル機器にメッセージを送信するには、以下の手順を実行します。

1.PushBulletのアプリのインストール

2.Webサイトからユーザのapi keyを取得。Account Settingにapi keyが表示されているので、控えます。
https://www.pushbullet.com/

3.以下のコードを実行してモバイル機器のdevice_idenを控えます。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.3')
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.auth.*
import groovy.json.*

// api keyはAccount Settingsから参照可能
def apikey = "<API KEYをここにペースト>"
def httpclient = new DefaultHttpClient()
httpclient.getCredentialsProvider().setCredentials(
  new AuthScope("api.pushbullet.com", 443),
  new UsernamePasswordCredentials(apikey, ""));

def method = new HttpGet("https://api.pushbullet.com/api/devices")
response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
println json
println "----"
for(device in json.devices){
  println "${device.extras.model}=${device.iden}"
}

4.以下のコードを実行して、メッセージを送信します。
@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.3.3')
import org.apache.http.client.entity.*
import org.apache.http.client.methods.*
import org.apache.http.impl.client.*
import org.apache.http.auth.*
import org.apache.http.message.*
import org.apache.http.protocol.*
import groovy.json.*

// api keyはAccount Settingsから参照可能
def apikey = "<API KEYをここにペースト>"
// device idenはAPIから取得可能
def device_iden = "<device idenをここにペースト>"

def httpclient = new DefaultHttpClient()
httpclient.getCredentialsProvider().setCredentials(
  new AuthScope("api.pushbullet.com", 443),
  new UsernamePasswordCredentials(apikey, ""));

def method = new HttpPost("https://api.pushbullet.com/api/pushes")
values = [
  new BasicNameValuePair("device_iden", device_iden),
  new BasicNameValuePair("type", "note"),
  new BasicNameValuePair("title", "テストです"),
  new BasicNameValuePair("body", "テスト本文です。")
]
method.setEntity(new UrlEncodedFormEntity(values, HTTP.UTF_8))

response = httpclient.execute(method)

println response.getStatusLine().getStatusCode()
def json = new JsonSlurper().parseText(response.getEntity().getContent().text)
println json

0 件のコメント:

コメントを投稿