Использование Scala 2.8 и Lift 2.2.
Я звоню в Github API и запрашиваю репозитории для пользователя. Когда у пользователя менее 30 репо, выполняется один вызов, и нет необходимости объединять JValues. Однако, когда у пользователя более 30 репо, выполняется несколько звонков. Я хотел бы объединить эти результаты этих звонков, а затем «сплющить» их. то есть имя «хранилища» в JValue должно возвращать все хранилища, а не только первые 30.
Приведенный ниже код возвращает следующее: Array (List (JObject (List (JField (репозитории, JArray (... JObject), List (JField (репозитории, JArray ...))))))))
То, что я хочу, это: Массив (List (JObject (List (JField (репозитории, JArray (....))))), где имя репозитория указывает на все репозиториев.
Я немного боролся с этим и, похоже, не понимаю.
import java.io._
import net.liftweb.json.JsonAST._
import net.liftweb.json.JsonParser._
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.{ DefaultHttpClient }
object Github extends Application {
implicit val formats = net.liftweb.json.DefaultFormats
val client = new DefaultHttpClient()
var repos = JArray(List[JValue]())
//Pick on mojombo since he has 30+ repos requires to calls to API
var method = new HttpGet("http://github.com/api/v2/json/repos/show/" + "mojombo" + "?page=1")
var response = client.execute(method)
var instream = response.getEntity.getContent();
var reader = new BufferedReader(new InputStreamReader(instream))
var line1 = reader.readLine
method = new HttpGet("http://github.com/api/v2/json/repos/show/" + "mojombo" + "?page=2")
response = client.execute(method)
instream = response.getEntity.getContent();
reader = new BufferedReader(new InputStreamReader(instream))
val line2 = reader.readLine
println(parse(line1) ++ parse(line2))
}