You are on page 1of 2

Big Data, Data Mining, and Machine Learning: Value Creation for Business

Leaders and Practitioners. Jared Dean.


2014 SAS Institute Inc. Published 2014 by John Wiley & Sons, Inc.

Appendix

NIKE+ FUELBAND SCRIPT TO RETRIEVE INFORMATION

import groovyx.net.http.ContentType
import groovyx.net.http.RESTClient

def accessToken = 17269d534424f87dbfc99c6ac1ab6f4


def nikePlusClient = new RESTClient(https://api.nike.com/me/
sport/)

def activities = []

def fetchAgain = true


def offset = 1
def count = 10
while (fetchAgain) {
// grab the top-level activities list
println Fetching top-level activities for offset: ${offset},
count: ${count}
def resp = nikePlusClient.get(
path:activities,
contentType : ContentType.JSON,
headers: [
appid : fuelband,
Accept : application/json
],
query:[
access_token : accessToken,
offset : offset,
count : count
]
)

assert resp.status == 200

resp.data.data.each() {
println Fetching details for: ${it.activityId}
def activityResp = nikePlusClient.get(
path: activities/${it.activityId},
contentType : ContentType.JSON,
headers: [
appid : fuelband,
Accept : application/json
],

245
246 BIG DATA, DATA MINING, AND MACHINE LEARNING

query: [
access_token : accessToken
]
)

assert activityResp.status == 200

// add this data for this activity


activities.add([
activityResp.data.activityId,
activityResp.data.startTime,
activityResp.data.activityType,
activityResp.data.metricSummary.fuel,
activityResp.data.metricSummary.distance,
activityResp.data.metricSummary.duration,
activityResp.data.metricSummary.steps
])
}

// determine if we need to fetch another page


if (null != resp.data.paging.next) {
fetchAgain = true
offset += count
} else {
fetchAgain = false
}
}

// write activities to a file


new File(C:\\nike_plus.csv).withWriter { out ->
// write the header
out.writeLine(activityId,startTime,activityType,fuel,distance
,duration,steps)

// write each activity


activities.each {
out.writeLine(${it[0]},${it[1]},${it[2]},${it[3]},${it[4]},$
{it[5]},${it[6]})
}
}

You might also like