diff --git a/.gitignore b/.gitignore index 09bdf3f..cfd88cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ build/ .idea/ .gradle/ + +*.iml \ No newline at end of file diff --git a/build.gradle b/build.gradle index df4c10c..6b7de41 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,12 @@ apply plugin: 'java' sourceCompatibility = 1.8 apply plugin: 'java' +apply plugin: 'scala' + +sourceSets.main.java.srcDirs = ["src/main/java"] +sourceSets.test.java.srcDirs = ["src/test/java"] +sourceSets.main.scala.srcDirs = ["src/main/scala"] +sourceSets.test.scala.srcDirs = ["src/test/scala"] repositories { mavenCentral() @@ -13,9 +19,22 @@ repositories { dependencies { compile 'com.sparkjava:spark-core:2.2' + compile 'org.scalaj:scalaj-http_2.11:2.3.0' + compile 'net.liftweb:lift-json_2.11:2.6.3' compile 'com.twilio.sdk:twilio-java-sdk:4.4.5' + compile "org.scala-lang:scala-library:2.11.8" + + testCompile 'org.scalatest:scalatest_2.11:3.0.0' testCompile group: 'junit', name: 'junit', version: '4.11' } +task scalaTest(dependsOn: ['testClasses'], type: JavaExec) { + main = 'org.scalatest.tools.Runner' + args = ['-R', 'build/classes/test', '-o'] + classpath = sourceSets.test.runtimeClasspath +} + +test.dependsOn scalaTest + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ca78035..13372ae 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index eda5ba9..9851e51 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Feb 14 19:01:07 BRST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip diff --git a/src/main/scala/Infra/Client/GitHubClient.scala b/src/main/scala/Infra/Client/GitHubClient.scala new file mode 100644 index 0000000..7decc08 --- /dev/null +++ b/src/main/scala/Infra/Client/GitHubClient.scala @@ -0,0 +1,21 @@ +import scalaj.http._ +import net.liftweb.json.DefaultFormats +import net.liftweb.json._ + +import Model._ + +package Infra.Client { + + class GitHubClient { + implicit val formats = DefaultFormats + + def getUserProjects(user: GitHubUser): List[GitHubProject] = { + val response: HttpResponse[String] = Http(s"https://api.github.com/users/${user.login}/repos?type=all").param("q","monkeys").asString + val parsedJson = parse(response.body) + + val result = parsedJson.children.map(project => project.extract[GitHubProject]) + return result + } + } +} + diff --git a/src/main/scala/Model/GitHubProject.scala b/src/main/scala/Model/GitHubProject.scala new file mode 100644 index 0000000..4f52a2b --- /dev/null +++ b/src/main/scala/Model/GitHubProject.scala @@ -0,0 +1,3 @@ +package Model + +case class GitHubProject(id: Option[Integer], name: Option[String], full_name: Option[String]) \ No newline at end of file diff --git a/src/main/scala/Model/GitHubUser.scala b/src/main/scala/Model/GitHubUser.scala new file mode 100644 index 0000000..fbb9a7b --- /dev/null +++ b/src/main/scala/Model/GitHubUser.scala @@ -0,0 +1,3 @@ +package Model + +class GitHubUser(val login: String) \ No newline at end of file diff --git a/src/test/scala/Infra/Client/GitHubClientTest.scala b/src/test/scala/Infra/Client/GitHubClientTest.scala new file mode 100644 index 0000000..218fd14 --- /dev/null +++ b/src/test/scala/Infra/Client/GitHubClientTest.scala @@ -0,0 +1,13 @@ +import Model.GitHubUser +import org.scalatest._ + +import Infra.Client._ + + +class GitHubClientTest extends FlatSpec with Matchers { + it should "read GitHub user projects" in { + val gitHubClient = new GitHubClient() + val projects = gitHubClient.getUserProjects(new GitHubUser("leonardiwagner")) + projects.length should be (1) + } +} \ No newline at end of file