Skip to content

Commit 1fd71a9

Browse files
author
Juan José Vázquez
committed
wip gitlab: get organizations
1 parent 270ec59 commit 1fd71a9

2 files changed

Lines changed: 37 additions & 8 deletions

File tree

core/src/main/scala/Config.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ object ScmConfig {
141141
s"$api/user"
142142

143143
val userOrgsEndpoint: String =
144-
s"$userEndpoint/orgs"
144+
s"$api/groups"
145145

146146
def orgEndpoint(login: String): String =
147-
s"$api/orgs/$login"
147+
s"$api/groups/$login"
148148

149149
def repoEndpoint(page: Int = 1): String =
150150
s"$api/user/repos?affiliation=owner,organization_member&visibility=all&direction=asc&page=$page"

core/src/main/scala/Gitlab.scala

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package nelson
22

3-
import argonaut.Argonaut.{ casecodec1, casecodec4 }
3+
import argonaut.Argonaut.{casecodec1, casecodec2, casecodec4}
44
import argonaut.{CodecJson, DecodeJson, EncodeJson}
55
import nelson.Github._
66
import org.http4s
77
import org.http4s._
88
import org.http4s.argonaut._
99
import org.http4s.client.Client
1010
import org.http4s.headers.Authorization
11+
import scalaz._, Scalaz._
1112
import scalaz.concurrent.Task
12-
import scalaz.~>
13-
import java.net.{ MalformedURLException, URI }
13+
import java.net.{MalformedURLException, URI}
1414

1515
object Gitlab {
1616

@@ -31,11 +31,25 @@ object Gitlab {
3131
case GetUser(token: AccessToken) =>
3232
fetch[Github.User](cfg.userEndpoint) { uri =>
3333
http4s.Request(
34-
headers = Headers(Authorization(OAuth2BearerToken(token.value))),
34+
headers = Headers(Header("PRIVATE-TOKEN", token.value)),
35+
// headers = Headers(Authorization(OAuth2BearerToken(token.value))),
3536
uri = uri)
3637
}
37-
case GetUserOrgKeys(token: AccessToken) => ???
38-
case GetOrganizations(keys: List[Github.OrgKey], t: AccessToken) => ???
38+
case GetUserOrgKeys(token: AccessToken) =>
39+
fetch[List[Github.OrgKey]](cfg.userOrgsEndpoint) { uri =>
40+
http4s.Request(
41+
headers = Headers(Header("PRIVATE-TOKEN", token.value)),
42+
uri = uri)
43+
}
44+
case GetOrganizations(keys: List[Github.OrgKey], t: AccessToken) =>
45+
Nondeterminism[Task].gatherUnordered(
46+
keys.map(key => fetch[Organization](cfg.orgEndpoint(key.slug)) { uri =>
47+
http4s.Request(
48+
headers = Headers(Header("PRIVATE-TOKEN", t.value)),
49+
uri = uri)
50+
})
51+
)
52+
//fetch[List[Organization]](cfg.orgEndpoint())
3953
case GetReleaseAssetContent(asset: Github.Asset, t: AccessToken) => ???
4054
case GetRelease(slug: Slug, releaseId: ID, t: AccessToken) => ???
4155
case GetUserRepositories(t: AccessToken) => ???
@@ -55,6 +69,21 @@ object Gitlab {
5569
casecodec4(Github.User.apply, Github.User.unapply
5670
)("username", "avatar_url", "name", "email")
5771

72+
implicit lazy val GithubOrg: CodecJson[Github.OrgKey] =
73+
casecodec2(Github.OrgKey.apply, Github.OrgKey.unapply)("id", "full_path")
74+
75+
// implicit lazy val OrganizationCodec: CodecJson[Organization] =
76+
// casecodec4(Organization.apply, Organization.unapply)("id", "name", "full_path", "avatar_url")
77+
78+
implicit lazy val OrganizationDecoder: DecodeJson[Organization] =
79+
DecodeJson(c =>
80+
((c --\ "id").as[Long] |@|
81+
(c --\ "name").as[Option[String]] |@|
82+
(c --\ "full_path").as[String]
83+
//(c --\ "avatar_url").as[URI]
84+
) { case (id, name, login) => Organization(id, name, login, new URI("https://localhost:8080")) } // TODO
85+
)
86+
5887
implicit lazy val AccessTokenCodec: CodecJson[AccessToken] =
5988
casecodec1(AccessToken.apply, AccessToken.unapply)("access_token")
6089

0 commit comments

Comments
 (0)