mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-03-25 02:21:52 +01:00
Added API for lisling vulnerabilities
This commit is contained in:
@@ -12,6 +12,7 @@ import models.LibraryTag
|
|||||||
import modules.TemplateCustomization
|
import modules.TemplateCustomization
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import play.api.i18n.MessagesApi
|
import play.api.i18n.MessagesApi
|
||||||
|
import play.api.libs.json.Json.JsValueWrapper
|
||||||
import play.api.libs.json._
|
import play.api.libs.json._
|
||||||
import play.twirl.api.Txt
|
import play.twirl.api.Txt
|
||||||
import services._
|
import services._
|
||||||
@@ -91,7 +92,6 @@ object Statistics{
|
|||||||
//implicit val groupedDependencyFormats = Json.format[GroupedDependency]
|
//implicit val groupedDependencyFormats = Json.format[GroupedDependency]
|
||||||
implicit val groupedVulnerableDependencyDetailedIdentifierWrites = Json.writes[GroupedVulnerableDependencyDetailedIdentifier]
|
implicit val groupedVulnerableDependencyDetailedIdentifierWrites = Json.writes[GroupedVulnerableDependencyDetailedIdentifier]
|
||||||
implicit val canonizedGroupedVulnerableDependencyDetailedIdentifierWrites = Json.writes[CanonizedGroupedVulnerableDependencyDetailedIdentifier]
|
implicit val canonizedGroupedVulnerableDependencyDetailedIdentifierWrites = Json.writes[CanonizedGroupedVulnerableDependencyDetailedIdentifier]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//noinspection TypeAnnotation
|
//noinspection TypeAnnotation
|
||||||
@@ -373,6 +373,18 @@ class Statistics @Inject()(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def libraryVulnerabilities(depId: com.ysoft.odc.Hashes) = ApiAction(ScanResults).async { implicit req =>
|
||||||
|
val (lastRefreshTime, resultsFuture) = projectReportsProvider.resultsForVersions(versions)
|
||||||
|
resultsFuture flatMap { allResults =>
|
||||||
|
select(allResults, None).fold(Future.successful(NotFound(Json.obj("error"->"not found")))) { selection =>
|
||||||
|
Future.successful(selection.result.groupedDependenciesByHashes.get(depId) match {
|
||||||
|
case None => NotFound(Json.obj("error"->"not found"))
|
||||||
|
case Some(dep) => Ok(Json.arr(dep.vulnerabilities.map(_.name).toIndexedSeq.sorted.map(x => x : JsValueWrapper) : _*))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
def affectedProjects(depId: Hashes) = ReadAction.async { implicit req =>
|
def affectedProjects(depId: Hashes) = ReadAction.async { implicit req =>
|
||||||
val (lastRefreshTime, resultsFuture) = projectReportsProvider.resultsForVersions(versions)
|
val (lastRefreshTime, resultsFuture) = projectReportsProvider.resultsForVersions(versions)
|
||||||
resultsFuture flatMap { case (successfulResults, failedResults) =>
|
resultsFuture flatMap { case (successfulResults, failedResults) =>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ GET /api/table controllers.Statistics.table()
|
|||||||
GET /api/all-dependencies.json controllers.Statistics.allDependencies(selector: Option[String])
|
GET /api/all-dependencies.json controllers.Statistics.allDependencies(selector: Option[String])
|
||||||
GET /api/all-dependencies-verbose.json controllers.Statistics.allDependenciesVerbose(selector: Option[String])
|
GET /api/all-dependencies-verbose.json controllers.Statistics.allDependenciesVerbose(selector: Option[String])
|
||||||
POST /api/compare-scan controllers.Statistics.compareScan()
|
POST /api/compare-scan controllers.Statistics.compareScan()
|
||||||
|
GET /api/library/:depId/vulnerabilities controllers.Statistics.libraryVulnerabilities(depId: com.ysoft.odc.Hashes)
|
||||||
GET /status controllers.Application.index(versions: Map[String, Int] = Map())
|
GET /status controllers.Application.index(versions: Map[String, Int] = Map())
|
||||||
GET /versions controllers.Application.index(versions: Map[String, Int])
|
GET /versions controllers.Application.index(versions: Map[String, Int])
|
||||||
GET /dependencies controllers.Application.dependencies(classified: Option[Boolean] = None, requiredTags: Seq[Int] ?= Seq(), noTag: Boolean ?= false)
|
GET /dependencies controllers.Application.dependencies(classified: Option[Boolean] = None, requiredTags: Seq[Int] ?= Seq(), noTag: Boolean ?= false)
|
||||||
|
|||||||
Reference in New Issue
Block a user