feature/Add endpoint Get API Info (root) v5.1.0

This commit is contained in:
Marko Milić 2023-01-18 10:21:36 +01:00
parent 3c46d5241c
commit f0758179ea
2 changed files with 84 additions and 3 deletions

View File

@ -1,7 +1,7 @@
package code.api.v5_1_0
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.{apiCollectionJson400, apiCollectionsJson400, postApiCollectionJson400, revokedConsentJsonV310}
import code.api.ResourceDocs1_4_0.SwaggerDefinitionsJSON.{apiCollectionJson400, apiCollectionsJson400, apiInfoJson400, postApiCollectionJson400, revokedConsentJsonV310}
import code.api.util.APIUtil._
import code.api.util.ApiRole._
import code.api.util.ApiTag._
@ -16,7 +16,7 @@ import code.util.Helper
import com.github.dwickern.macros.NameOf.nameOf
import com.openbankproject.commons.ExecutionContext.Implicits.global
import com.openbankproject.commons.model.BankId
import com.openbankproject.commons.util.ApiVersion
import com.openbankproject.commons.util.{ApiVersion, ScannedApiVersion}
import net.liftweb.common.Full
import net.liftweb.http.rest.RestHelper
@ -32,7 +32,7 @@ trait APIMethods510 {
class Implementations510 {
val implementedInApiVersion = ApiVersion.v5_1_0
val implementedInApiVersion: ScannedApiVersion = ApiVersion.v5_1_0
private val staticResourceDocs = ArrayBuffer[ResourceDoc]()
def resourceDocs = staticResourceDocs
@ -41,6 +41,34 @@ trait APIMethods510 {
val codeContext = CodeContext(staticResourceDocs, apiRelations)
staticResourceDocs += ResourceDoc(
root,
implementedInApiVersion,
"root",
"GET",
"/root",
"Get API Info (root)",
"""Returns information about:
|
|* API version
|* Hosted by information
|* Hosted at information
|* Energy source information
|* Git Commit""",
EmptyBody,
apiInfoJson400,
List(UnknownError, "no connector set"),
apiTagApi :: apiTagNewStyle :: Nil)
lazy val root : OBPEndpoint = {
case (Nil | "root" :: Nil) JsonGet _ => {
cc => Future {
JSONFactory510.getApiInfoJSON(implementedInApiVersion) -> HttpCode.`200`(cc.callContext)
}
}
}
staticResourceDocs += ResourceDoc(
getAllApiCollections,
implementedInApiVersion,

View File

@ -26,8 +26,61 @@
*/
package code.api.v5_1_0
import code.api.Constant
import code.api.util.APIUtil
import code.api.util.APIUtil.gitCommit
import code.api.v4_0_0.{EnergySource400, HostedAt400, HostedBy400}
import com.openbankproject.commons.util.ScannedApiVersion
case class APIInfoJsonV510(
version : String,
version_status: String,
git_commit : String,
stage : String,
connector : String,
hostname : String,
local_identity_provider : String,
hosted_by : HostedBy400,
hosted_at : HostedAt400,
energy_source : EnergySource400,
resource_docs_requires_role: Boolean
)
object JSONFactory510 {
def getApiInfoJSON(implementedInApiVersion: ScannedApiVersion) = {
val (apiVersion, apiVersionStatus) = (implementedInApiVersion, OBPAPI5_1_0.versionStatus)
val organisation = APIUtil.getPropsValue("hosted_by.organisation", "TESOBE")
val email = APIUtil.getPropsValue("hosted_by.email", "contact@tesobe.com")
val phone = APIUtil.getPropsValue("hosted_by.phone", "+49 (0)30 8145 3994")
val organisationWebsite = APIUtil.getPropsValue("organisation_website", "https://www.tesobe.com")
val hostedBy = new HostedBy400(organisation, email, phone, organisationWebsite)
val organisationHostedAt = APIUtil.getPropsValue("hosted_at.organisation", "")
val organisationWebsiteHostedAt = APIUtil.getPropsValue("hosted_at.organisation_website", "")
val hostedAt = HostedAt400(organisationHostedAt, organisationWebsiteHostedAt)
val organisationEnergySource = APIUtil.getPropsValue("energy_source.organisation", "")
val organisationWebsiteEnergySource = APIUtil.getPropsValue("energy_source.organisation_website", "")
val energySource = EnergySource400(organisationEnergySource, organisationWebsiteEnergySource)
val connector = APIUtil.getPropsValue("connector").openOrThrowException("no connector set")
val resourceDocsRequiresRole = APIUtil.getPropsAsBoolValue("resource_docs_requires_role", false)
APIInfoJsonV510(
version = apiVersion.vDottedApiVersion,
version_status = apiVersionStatus,
git_commit = gitCommit,
connector = connector,
hostname = Constant.HostName,
stage = System.getProperty("run.mode"),
local_identity_provider = Constant.localIdentityProvider,
hosted_by = hostedBy,
hosted_at = hostedAt,
energy_source = energySource,
resource_docs_requires_role = resourceDocsRequiresRole
)
}
}