Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions core/src/main/scala/se/lu/nateko/cp/doi/core/DoiClient.scala
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ class DoiClient(config: DoiClientConfig, http: DoiHttp)(implicit ctxt: Execution
val metaBase: URL = new URL(config.restEndpoint, "dois")
def clientDois(query: String, page: Int): URL = new URL(
//TODO Move page size into the API, too
s"${config.restEndpoint}dois?query=${URLEncoder.encode(query, "UTF-8")}&client-id=${config.symbol.toLowerCase()}&page[size]=25&page[number]=$page"
s"${config.restEndpoint}dois?query=${URLEncoder.encode(query, "UTF-8")}&client-id=${config.symbol.toLowerCase()}&page[size]=25&page[number]=$page&affiliation=true"
)

def doi(suffix: String): Doi = Doi(config.doiPrefix, suffix)
def metaUrl(doi: Doi) = new URL(s"$metaBase/$doi")
def metaUrl(doi: Doi) = new URL(s"$metaBase/${doi}?affiliation=true")

def listDoisMeta(query: Option[String] = None, page: Option[Int]): Future[String] = http
.getJson(clientDois(query.getOrElse(""), page.getOrElse(1))).flatMap(
Expand Down
15 changes: 1 addition & 14 deletions core/src/main/scala/se/lu/nateko/cp/doi/core/JsonSupport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -80,20 +80,7 @@ object JsonSupport extends DefaultJsonProtocol{
}
}

implicit val affiliationFormat = new JsonFormat[Affiliation]{
def write(affiliation: Affiliation) = JsObject(
"name" -> JsString(affiliation.name)
)

def read(json: JsValue): Affiliation = json match {
case JsObject(fields) => fields.get("name") match {
case Some(JsString(name)) => Affiliation(name)
case _ => deserializationError("Expected affiliation name")
}
case JsString(name) => Affiliation(name)
case _ => deserializationError("Expected affiliation")
}
}
implicit val affiliationFormat = jsonFormat1(Affiliation)
implicit val creatorFormat = fieldConflatingFormat(jsonFormat3(Creator), "name")
implicit val contributorFormat = fieldConflatingFormat(jsonFormat4(Contributor), "name")
implicit val titleFormat = jsonFormat3(Title)
Expand Down
36 changes: 27 additions & 9 deletions core/src/test/resources/productionDois.json
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,9 @@
"givenName": "Christoph",
"familyName": "Gerbig",
"affiliation": [
"Max Planck Institute for Biogeochemistry, Jena, Germany"
{
"name": "Max Planck Institute for Biogeochemistry, Jena, Germany"
}
],
"nameIdentifiers": [
{
Expand Down Expand Up @@ -516,7 +518,9 @@
"givenName": "Christoph",
"familyName": "Gerbig",
"affiliation": [
"Max Planck Institute for Biogeochemistry, Jena, Germany"
{
"name": "Max Planck Institute for Biogeochemistry, Jena, Germany"
}
],
"contributorType": "Producer",
"nameIdentifiers": [
Expand All @@ -532,7 +536,9 @@
"givenName": "Frank-Thomas",
"familyName": "Koch",
"affiliation": [
"Deutscher Wetterdienst (DWD), Meteorologisches Observatorium Hohenpeißenberg, Germany"
{
"name": "Deutscher Wetterdienst (DWD), Meteorologisches Observatorium Hohenpeißenberg, Germany"
}
],
"contributorType": null,
"nameIdentifiers": [
Expand All @@ -548,7 +554,9 @@
"givenName": "Ute",
"familyName": "Karstens",
"affiliation": [
"ICOS Carbon Portal, Lund University, Lund, Sweden"
{
"name": "ICOS Carbon Portal, Lund University, Lund, Sweden"
}
],
"contributorType": "DataCurator",
"nameIdentifiers": [
Expand Down Expand Up @@ -641,7 +649,9 @@
"givenName": "Christoph",
"familyName": "Gerbig",
"affiliation": [
"Max Planck Institute for Biogeochemistry, Jena, Germany"
{
"name": "Max Planck Institute for Biogeochemistry, Jena, Germany"
}
],
"nameIdentifiers": [
{
Expand All @@ -656,7 +666,9 @@
"givenName": "Frank-Thomas",
"familyName": "Koch",
"affiliation": [
"Deutscher Wetterdienst (DWD), Meteorologisches Observatorium Hohenpeißenberg, Germany"
{
"name": "Deutscher Wetterdienst (DWD), Meteorologisches Observatorium Hohenpeißenberg, Germany"
}
],
"nameIdentifiers": [
{
Expand Down Expand Up @@ -693,7 +705,9 @@
"givenName": "Christoph",
"familyName": "Gerbig",
"affiliation": [
"Max Planck Institute for Biogeochemistry, Jena, Germany"
{
"name": "Max Planck Institute for Biogeochemistry, Jena, Germany"
}
],
"contributorType": "Producer",
"nameIdentifiers": [
Expand All @@ -709,7 +723,9 @@
"givenName": "Frank-Thomas",
"familyName": "Koch",
"affiliation": [
"Deutscher Wetterdienst (DWD), Meteorologisches Observatorium Hohenpeißenberg, Germany"
{
"name": "Deutscher Wetterdienst (DWD), Meteorologisches Observatorium Hohenpeißenberg, Germany"
}
],
"contributorType": "ProjectMember",
"nameIdentifiers": [
Expand All @@ -725,7 +741,9 @@
"givenName": "Ute",
"familyName": "Karstens",
"affiliation": [
"ICOS Carbon Portal, Lund University, Lund, Sweden"
{
"name": "ICOS Carbon Portal, Lund University, Lund, Sweden"
}
],
"contributorType": "DataCurator",
"nameIdentifiers": [
Expand Down
10 changes: 1 addition & 9 deletions js/src/main/scala/se/lu/nateko/cp/doi/gui/JsonSupport.scala
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,7 @@ object JsonSupport{
}
}

implicit val affiliationFormat = new Format[Affiliation]{
def writes(affiliation: Affiliation): JsValue = Json.obj(
"name" -> JsString(affiliation.name)
)
def reads(json: JsValue): JsResult[Affiliation] = (json \ "name") match {
case JsDefined(JsString(name)) => JsSuccess(Affiliation(name))
case _ => json.validate[String].map(Affiliation)
}
}
implicit val affiliationFormat = Json.format[Affiliation]
implicit val creatorFormat = fieldConflatingFormat(Json.format[Creator], "name")
implicit val contributorFormat = fieldConflatingFormat(Json.format[Contributor], "name")
implicit val titleFormat = Json.format[Title]
Expand Down