Skip to content

Instantly share code, notes, and snippets.

@dacr
Last active April 2, 2023 10:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dacr/3ac4eb919aa81190bf63bf02dfe55205 to your computer and use it in GitHub Desktop.
Save dacr/3ac4eb919aa81190bf63bf02dfe55205 to your computer and use it in GitHub Desktop.
List a user github gists using sttp for client http and circe for json processing. / published by https://github.com/dacr/code-examples-manager #e2a1acae-e413-4b91-97d9-f720000a1209/927e94deb68b8cc477437c6fd3daa24c608d7c9
// summary : List a user github gists using sttp for client http and circe for json processing.
// keywords : scala, sttp, circe, json, gists-api
// publish : gist
// authors : David Crosson
// license : Apache NON-AI License Version 2.0 (https://raw.githubusercontent.com/non-ai-licenses/non-ai-licenses/main/NON-AI-APACHE2)
// id : e2a1acae-e413-4b91-97d9-f720000a1209
// created-on : 2020-05-31T19:54:52Z
// managed-by : https://github.com/dacr/code-examples-manager
// execution : scala 2.12 ammonite script (http://ammonite.io/) - run as follow 'amm scriptname.sc'
import $ivy.`com.softwaremill.sttp::core:1.5.17`
import $ivy.`com.softwaremill.sttp::circe:1.5.17`
import $ivy.`io.circe::circe-generic:0.11.1` // Keep in sync with sttp.circe used circe release
import com.softwaremill.sttp.quick._
import com.softwaremill.sttp.circe._
import io.circe.generic.auto._
case class Gist(
id:String,
description:String,
html_url:String,
public:Boolean,
)
val user = "dacr"
val query = uri"https://api.github.com/users/$user/gists?page=1&per_page=10"
val response =sttp.get(query).response(asJson[Array[Gist]]).send()
val next = response.header("Link") // it provides the link for the next & last page :)
val gists = response.body.right.get.right.get
println("10 last gists :")
gists.foreach{ println }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment