Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/chriniko13/eresearch-author-finder
https://github.com/chriniko13/eresearch-author-finder
activemq awaitility dropwizard-metrics failsafe guava jaxb lombok spring-boot-aop spring-boot-test spring-boot-undertow wiremock
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/chriniko13/eresearch-author-finder
- Owner: chriniko13
- Created: 2019-04-17T15:19:25.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2022-08-18T19:05:49.000Z (over 2 years ago)
- Last Synced: 2023-03-04T17:47:11.603Z (almost 2 years ago)
- Topics: activemq, awaitility, dropwizard-metrics, failsafe, guava, jaxb, lombok, spring-boot-aop, spring-boot-test, spring-boot-undertow, wiremock
- Language: Java
- Size: 153 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Eresearch Author Finder Service #
### Description
The purpose of this service is to consume the info which is provided from the
following elsevier api: http://api.elsevier.com/documentation/AUTHORSearchAPI.wadlThe search view (result from the consuming of the service we get)
is the following: http://api.elsevier.com/documentation/search/AuthorSearchViews.htmSee also:
* http://api.elsevier.com/documentation/search/AUTHORSearchTips.htm
* http://api.elsevier.com/content/search/fields/authorThe search queries we use are the following:
* query=authlast(Christidis) and authfirst(Nikolaos)
* query=authlast(Christidis) or authfirst(Nikolaos)Keep in mind that authfirst can accept also initials.
There is existing business logic in the service which support this.
* query=authlast(Christidis) and authfirst(Nikolaos T.)
* query=authlast(Christidis) and authfirst(Nikolaos Thomas)Keep in mind that are application properties to search with OR,AND or BOTH(AND && OR).
### External Dependencies needed in order to run service
* Academic VPN in order to fetch results from Elsevier API (https://dev.elsevier.com/documentation/ScienceDirectSearchAPI.wadl#d1e166)
* ActiveMQ
* Execute: `docker-compose up`
* Execute: `docker-compose down`
### Integration Tests (run docker-compose first)
* Execute: `mvn clean verify`
### Create Docker Image
* Execute: `mvn clean install -DskipITs=true`
* Execute: `docker build -t chriniko/eresearch-author-finder:1.0 .` in order to build docker image.* Fast: `mvn clean install -DskipITs=true && docker build -t chriniko/eresearch-author-finder:1.0 .`
### How to run service (not dockerized)
* Execute: `docker-compose up`* Two options:
* Execute:
* `mvn clean install -DskipITs=true`
* `java -jar -Dspring.profiles.active=dev target/eresearch-author-finder-1.0-boot.jar`
* Execute:
* `mvn spring-boot:run -Dspring.profiles.active=dev`* (Optional) When you finish: `docker-compose down`
### How to run service (dockerized)
* Uncomment the section in `docker-compose.yml` file for service: `eresearch-author-finder:`* Execute: `mvn clean install -DskipITs=true`
* Execute: `docker-compose build`
* Execute: `docker-compose up`
* (Optional) When you finish: `docker-compose down`
### Example Request
```json
{
"author-name":{
"firstname":"Nikolaos",
"initials":"",
"surname":"Christidis"
}
}```
### Example Response (i use only AND search operator in service configuration for short response)
```json
{
"operation-result": true,
"process-finished-date": "2019-04-17T11:12:56.852Z",
"requested-author-finder-dto": {
"author-name": {
"firstname": "Nikolaos",
"initials": "",
"surname": "Christidis"
}
},
"fetched-results-size": 1,
"fetched-results": [
{
"search-results": {
"opensearch:totalResults": "2",
"opensearch:startIndex": "0",
"opensearch:itemsPerPage": "2",
"opensearch:Query": {
"@role": "request",
"@searchTerms": "authlast(Christidis) and authfirst(Nikolaos )",
"@startPage": "0"
},
"link": [
{
"@_fa": "true",
"@href": "https://api.elsevier.com/content/search/author?start=0&count=25&query=authlast%28Christidis%29+and+authfirst%28Nikolaos+%29",
"@ref": "self",
"@type": "application/json"
},
{
"@_fa": "true",
"@href": "https://api.elsevier.com/content/search/author?start=0&count=25&query=authlast%28Christidis%29+and+authfirst%28Nikolaos+%29",
"@ref": "first",
"@type": "application/json"
}
],
"entry": [
{
"@force-array": null,
"error": null,
"@_fa": "true",
"link": [
{
"@_fa": "true",
"@href": "https://api.elsevier.com/content/author/author_id/23007591800",
"@ref": "self",
"@type": null
},
{
"@_fa": "true",
"@href": "https://api.elsevier.com/content/search/author?query=au-id%2823007591800%29",
"@ref": "search",
"@type": null
},
{
"@_fa": "true",
"@href": "https://www.scopus.com/author/citedby.uri?partnerID=HzOxMe3b&citedAuthorId=23007591800&origin=inward",
"@ref": "scopus-citedby",
"@type": null
},
{
"@_fa": "true",
"@href": "https://www.scopus.com/authid/detail.uri?partnerID=HzOxMe3b&authorId=23007591800&origin=inward",
"@ref": "scopus-author",
"@type": null
}
],
"prism:url": "https://api.elsevier.com/content/author/author_id/23007591800",
"dc:identifier": "AUTHOR_ID:23007591800",
"eid": "9-s2.0-23007591800",
"orcid": null,
"preferred-name": {
"surname": "Christidis",
"given-name": "Nikolaos",
"initials": "N."
},
"name-variant": [
{
"@_fa": "true",
"surname": "Christidis",
"given-name": "Nikos",
"initials": "N."
},
{
"@_fa": "true",
"surname": "Christidis",
"given-name": "N.",
"initials": "N."
}
],
"document-count": "42",
"subject-area": [
{
"@abbrev": "EART",
"@frequency": "52",
"$": "Earth and Planetary Sciences (all)"
},
{
"@abbrev": "ENVI",
"@frequency": "11",
"$": "Environmental Science (all)"
},
{
"@abbrev": "SOCI",
"@frequency": "7",
"$": "Social Sciences (all)"
}
],
"affiliation-current": {
"affiliation-url": "https://api.elsevier.com/content/affiliation/affiliation_id/60018258",
"affiliation-id": "60018258",
"affiliation-name": "Met Office",
"affiliation-city": "Exeter",
"affiliation-country": "United Kingdom"
}
},
{
"@force-array": null,
"error": null,
"@_fa": "true",
"link": [
{
"@_fa": "true",
"@href": "https://api.elsevier.com/content/author/author_id/55025830900",
"@ref": "self",
"@type": null
},
{
"@_fa": "true",
"@href": "https://api.elsevier.com/content/search/author?query=au-id%2855025830900%29",
"@ref": "search",
"@type": null
},
{
"@_fa": "true",
"@href": "https://www.scopus.com/author/citedby.uri?partnerID=HzOxMe3b&citedAuthorId=55025830900&origin=inward",
"@ref": "scopus-citedby",
"@type": null
},
{
"@_fa": "true",
"@href": "https://www.scopus.com/authid/detail.uri?partnerID=HzOxMe3b&authorId=55025830900&origin=inward",
"@ref": "scopus-author",
"@type": null
}
],
"prism:url": "https://api.elsevier.com/content/author/author_id/55025830900",
"dc:identifier": "AUTHOR_ID:55025830900",
"eid": "9-s2.0-55025830900",
"orcid": null,
"preferred-name": {
"surname": "Christidis",
"given-name": "Nikolaos",
"initials": "N."
},
"name-variant": [
{
"@_fa": "true",
"surname": "Christidis",
"given-name": "Nikolaus",
"initials": "N."
},
{
"@_fa": "true",
"surname": "Christidis",
"given-name": "N.",
"initials": "N."
}
],
"document-count": "25",
"subject-area": [
{
"@abbrev": "MEDI",
"@frequency": "27",
"$": "Medicine (all)"
},
{
"@abbrev": "DENT",
"@frequency": "8",
"$": "Dentistry (all)"
},
{
"@abbrev": "NEUR",
"@frequency": "4",
"$": "Neuroscience (all)"
}
],
"affiliation-current": {
"affiliation-url": "https://api.elsevier.com/content/affiliation/affiliation_id/115400936",
"affiliation-id": "115400936",
"affiliation-name": "Scandinavian Center for Orofacial Neurosciences (SCON)",
"affiliation-city": "Huddinge",
"affiliation-country": "Sweden"
}
}
]
}
}
]
}```