diff --git a/spec.md b/spec.md index 46f829d..e0941ef 100644 --- a/spec.md +++ b/spec.md @@ -445,29 +445,49 @@ sequenceDiagram end User->>Client: Requests connection to free.example.com/init + activate Client Client->>Provider: Query: free.example.com/init - Provider->>Client: Response: Initialization data - + activate Provider + Provider-->Client: Response: Initialization data + deactivate Provider + Client->>Provider: Query: free.example.com/assets + activate Provider note right of Client: The asset query URI
was included in the
initialization data Provider->>Provider: Searches its database for assets
based on query parameters - Provider->>Client: Response: List of assets - Client->>User: Presents asset list + Provider-->Client: Response: List of assets + deactivate Provider + + Client-->User: Presents asset list + deactivate Client User->>Client: Selects asset from list + activate Client + Client->>Provider: Query: free.example.com/implementations?asset= + activate Provider note right of Client: The implementations query URI and parameters
were included in the asset data Provider->>Provider: Loads implementations
for this asset from its database - Provider->>Client: Returns list of possible implementations + Provider-->Client: Returns list of possible implementations + deactivate Provider + Client->>Client: Validates proposed implementations and
selects those that it can handle
(based on metadata
about file formats and relationships) - Client->>User: Presents implementation(s)
and asks for confirmation + Client-->User: Presents implementation(s)
and asks for confirmation + deactivate Client User->>Client: Confirms asset import + loop For every component in implementation + activate Client Client->>Provider: Initiates HTTP download of component file - Provider->>Client: Transmits file + activate Provider + Provider-->Client: Transmits file + deactivate Provider end + deactivate Client + Client->>Client: Processes files locally based
on implementation metadata
(usually by importing them
into the current project) - Client->>User: Shows confirmation message + Client-->User: Shows confirmation message note left of User: User can now utilize
the asset in their project. + ``` ### 3.9.2. Complete Version @@ -487,51 +507,51 @@ sequenceDiagram participant CDN-Service end - User->>Client: Requests connection to paid.example.com/init + User->>+Client: Requests connection to paid.example.com/init note left of User: The provider URI might be
bookmarked in the client,
if it supports that. - Client->>Provider: Query: paid.example.com/init - Provider->>Client: Response: Initialization data, containing requirement for authentication - Client->>User: Presents required headers
as a GUI/form + Client->>+Provider: Query: paid.example.com/init + Provider->>-Client: Response: Initialization data, containing requirement for authentication + Client->>+User: Presents required headers
as a GUI/form note left of User: Some data
might be cached by the
client and does not need
to be re-entered. User->>User: Fills out required header values User->>Client: Confirms inputs of provider data. - Client->>Provider: Query: paid.example.com/status - Provider->>Client: Responds with status data
(Login confirmation, username, account balance, ...) + Client->>+Provider: Query: paid.example.com/status + Provider->>-Client: Responds with status data
(Login confirmation, username, account balance, ...) User->>User: Fills out asset query
as defined by provider
(tags, categories, ...) - User->>Client: Confirms choices and requests asset list - Client->>Provider: Query: paid.example.com/assets?q= + User->>+Client: Confirms choices and requests asset list + Client->>+Provider: Query: paid.example.com/assets?q= note right of Client: The asset query URI
was included in the
initialization data Provider->>Provider: Searches its database for assets
based on query parameters - Provider->>Client: Response: List of assets + Provider->>-Client: Response: List of assets Client->>User: Presents asset list - User->>Client: Selects asset from list + User->>+Client: Selects asset from list - Client->>User: Presents available parameters
for querying implementations
as GUI/form + Client->>-User: Presents available parameters
for querying implementations
as GUI/form User->>User: Fills out implementations query
(texture resolution,LOD,...) - User->>Client: Confirms choices and
requests implementations - Client->>Provider: Query: paid.example.com/implementations?asset=&resolution= + User->>+Client: Confirms choices and
requests implementations + Client->>+Provider: Query: paid.example.com/implementations?asset=&resolution= note right of Client: The implementations query URI
was included in the asset data Provider->>Provider: Loads implementations
for this asset from its database,
based on query - Provider->>Client: Returns list of possible implementations
*without download information* + Provider->>-Client: Returns list of possible implementations
*without download information* Client->>Client: Validates proposed implementations and
selects those that it can handle
(based on metadata
about file formats and relationships) - Client->>User: Presents implementation(s)
and asks for confirmation + Client->>+User: Presents implementation(s)
and asks for confirmation User->>User: Reviews suggested implementation(s)
(*price*,files, download size, etc.) - User->>Client: Confirms asset import + User->>+Client: Confirms asset import loop Possibly multiple times, depending on granularity of
provider's unlocking model - Client->>Provider: Query: paid.example.com/unlock?asset=&component= - Provider->>Client: Confirms the unlocking action. + Client->>+Provider: Query: paid.example.com/unlock?asset=&component= + Provider->>-Client: Confirms the unlocking action. end loop For every component - Client->>Provider: Query: paid.example.com/downloads?asset=&component= - Provider->> CDN-Service: Query: storage-api.example.com/generate-temp-dl-link?file= - CDN-Service->>Provider: Responds with
temporary download link - Provider->>Client: Responds with HTTP redirect to (temporary) download link - Client->>CDN-Service: Follows HTTP redirect and initiates HTTP download of component file - CDN-Service->>Client: Responds with file + Client->>+Provider: Query: paid.example.com/downloads?asset=&component= + Provider->>+ CDN-Service: Query: storage-api.example.com/generate-temp-dl-link?file= + CDN-Service->>-Provider: Responds with
temporary download link + Provider->>-Client: Responds with HTTP redirect to (temporary) download link + Client->>+CDN-Service: Follows HTTP redirect and initiates HTTP download of component file + CDN-Service->>-Client: Responds with file end Client->>Client: Processes files locally based
on implementation metadata
(usually by importing them
into the current project)