Skip to content

Commit

Permalink
Added missing file
Browse files Browse the repository at this point in the history
  • Loading branch information
oxisto committed Nov 12, 2024
1 parent 7d3edad commit 70953e2
Show file tree
Hide file tree
Showing 2 changed files with 295 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class RetrievedProvider(val json: Provider) : Validatable {
fun fetchRolieFeeds(
loader: CsafLoader = lazyLoader,
channelCapacity: Int = DEFAULT_CHANNEL_CAPACITY
): ReceiveChannel<Pair<Provider.Feed, Result<ROLIEFeed>>> {
): ReceiveChannel<Pair<Feed, Result<ROLIEFeed>>> {
val feeds = json.distributions?.mapNotNull { it.rolie }?.flatMap { it.feeds } ?: listOf()

// This channel collects up to `channelCapacity` feeds concurrently.
Expand Down Expand Up @@ -164,6 +164,7 @@ class RetrievedProvider(val json: Provider) : Validatable {
}
}

/** Populates this [ProducerScope] with the contents of the [indexChannel]. */
private suspend fun ProducerScope<Deferred<Result<RetrievedDocument>>>
.fetchDocumentsFromIndices(
indexChannel: ReceiveChannel<Pair<String, Result<String>>>,
Expand Down Expand Up @@ -197,9 +198,10 @@ class RetrievedProvider(val json: Provider) : Validatable {
}
}

/** Populates this [ProducerScope] with the contents of the [rolieChannel]. */
private suspend fun ProducerScope<Deferred<Result<RetrievedDocument>>>
.fetchDocumentsFromRolieFeeds(
rolieChannel: ReceiveChannel<Pair<Provider.Feed, Result<ROLIEFeed>>>,
rolieChannel: ReceiveChannel<Pair<Feed, Result<ROLIEFeed>>>,
loader: CsafLoader
) {
for ((feed, rolieResult) in rolieChannel) {
Expand Down
291 changes: 291 additions & 0 deletions csaf-schema/src/main/resources/schema/ROLIE_feed_json_schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,291 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/oasis-tcs/csaf/master/csaf_2.0/json_schema/ROLIE_feed_json_schema.json",
"title": "ROLIE Feed auxiliary Schema",
"description": "Representation of CSAF ROLIE feed as a JSON document.",
"$defs": {
"json_link_t": {
"title": "JSON Link",
"description": "Contains the URL of the JSON file.",
"type": "string",
"format": "uri",
"pattern": "^https://.+\\.json$"
},
"link_t": {
"title": "List of Links",
"description": "Contains a list of links related to the current context.",
"type": "array",
"prefixItems": [
{
"title": "Link",
"description": "Specifies the JSON link.",
"type": "object",
"required": [
"rel",
"href"
],
"properties": {
"href": {
"title": "Hyper reference",
"description": "Contains the URL of the JSON file.",
"$ref": "#/$defs/json_link_t"
},
"rel": {
"title": "Relationship",
"description": "Contains the relationship value of the link.",
"type": "string",
"enum": [
"self"
]
}
}
}
],
"minItems": 1,
"uniqueItems": true,
"items": {
"title": "Link",
"description": "Specifies a single link.",
"type": "object",
"required": [
"rel",
"href"
],
"properties": {
"href": {
"title": "Hyper reference",
"description": "Contains the URL of the link.",
"type": "string",
"format": "uri"
},
"rel": {
"title": "Relationship",
"description": "Contains the relationship value of the link.",
"type": "string",
"minLength": 1
}
}
}
}
},
"type": "object",
"required": [
"feed"
],
"properties": {
"feed": {
"title": "CSAF ROLIE feed",
"description": "Contains all information of the feed.",
"type": "object",
"required": [
"id",
"title",
"link",
"category",
"updated",
"entry"
],
"properties": {
"id": {
"title": "ID",
"description": "Contains a unique identifier for this ROLIE feed.",
"type": "string",
"pattern": "^[a-zA-Z0-9+\\-_\\.]+$",
"minLength": 1
},
"title": {
"title": "Feed title",
"description": "Contains the title for this ROLIE feed.",
"type": "string",
"minLength": 1
},
"link": {
"title": "List of Links",
"description": "Contains a list of links related to this feed.",
"$ref": "#/$defs/link_t"
},
"category": {
"title": "List of Categories",
"description": "Contains a list of categories related to this feed.",
"type": "array",
"prefixItems": [
{
"title": "CSAF ROLIE category",
"description": "Contains the required ROLIE category value.",
"type": "object",
"required": [
"scheme",
"term"
],
"properties": {
"scheme": {
"title": "Scheme",
"description": "Contains the URI of the scheme to use.",
"type": "string",
"enum": [
"urn:ietf:params:rolie:category:information-type"
]
},
"term": {
"title": "Term",
"description": "Contains the term that is valid in the context of the scheme.",
"type": "string",
"enum": [
"csaf"
]
}
}
}
],
"minItems": 1,
"uniqueItems": true,
"items": {
"title": "Category",
"description": "Specifies a single category.",
"type": "object",
"required": [
"scheme",
"term"
],
"properties": {
"scheme": {
"title": "Scheme",
"description": "Contains the URI of the scheme to use.",
"type": "string",
"format": "uri"
},
"term": {
"title": "Term",
"description": "Contains the term that is valid in the context of the scheme.",
"type": "string",
"minLength": 1
}
}
}
},
"updated": {
"title": "Updated",
"description": "Contains the date and time this feed was updated the last time.",
"type": "string",
"format": "date-time"
},
"entry": {
"title": "List of Entries",
"description": "Contains a list of feed entries.",
"type": "array",
"uniqueItems": true,
"items": {
"title": "Entry",
"description": "Contains all information for a single feed entry.",
"type": "object",
"required": [
"id",
"title",
"link",
"published",
"updated",
"content",
"format"
],
"properties": {
"id": {
"title": "ID",
"description": "Contains the document tracking ID of the CSAF document.",
"type": "string",
"pattern": "^[\\S](.*[\\S])?$",
"minLength": 1
},
"title": {
"title": "Title",
"description": "Contains the document title of the CSAF document.",
"type": "string",
"minLength": 1
},
"link": {
"title": "List of Links",
"description": "Contains a list of links related to this entry.",
"$ref": "#/$defs/link_t"
},
"published": {
"title": "Published",
"description": "Contains the date and time this entry was initially added to the feed.",
"type": "string",
"format": "date-time"
},
"updated": {
"title": "Updated",
"description": "Contains the date and time this entry was the last time updated in the feed.",
"type": "string",
"format": "date-time"
},
"summary": {
"title": "Summary",
"description": "Contains the summary of the CSAF document.",
"type": "object",
"properties": {
"content": {
"title": "Content",
"description": "Contains the actual text of the summary.",
"type": "string",
"minLength": 1
}
}
},
"content": {
"title": "Content of the entry",
"description": "Contains information about the content.",
"type": "object",
"required": [
"type",
"src"
],
"properties": {
"src": {
"title": "Source Code",
"description": "Contains a link to the source code of the file",
"$ref": "#/$defs/json_link_t"
},
"type": {
"title": "MIME type",
"description": "Contains the MIME type of the content.",
"type": "string",
"enum": [
"application/json"
]
}
}
},
"format": {
"title": "Format",
"description": "Contains information about the format of the entry.",
"type": "object",
"required": [
"schema",
"version"
],
"properties": {
"schema": {
"title": "Schema of the entry",
"description": "Contains the schema the CSAF document is valid against.",
"type": "string",
"enum": [
"https://docs.oasis-open.org/csaf/csaf/v2.0/csaf_json_schema.json"
]
},
"version": {
"title": "CSAF Version",
"description": "Contains the CSAF version the document was written in.",
"type": "string",
"enum": [
"2.0"
]
}
}
}
}
}
}
}
}
}
}

0 comments on commit 70953e2

Please sign in to comment.