ApodiniAnalystPresenter
combines Analyst and Presenter with the Apodini framework used to create web services.
The framework defines the PresenterService
protocol:
public protocol PresenterService {
var view: _CodableView { get async throws }
}
PresenterService
protocol instances need to provide a Presenter View
(_CodableView
).
Instances conforming to this protocol can be injected in the Apodini @Environment
and retrieved using @Environment(\.presenterService) var presenterService: PresenterService
in Handler
instances.
The PresenterHandler
provides a reusable implementation of an Apodini Handler
that offers the view returned in a PresenterService
.
Developers wanting to use Analyst and Presenter in combination with Apodini can create types conforming to PresenterService
to that can be served to consumers using Apodini endpoints.
MetricPresenterService
is a reference implementation conforming to PresenterService
that showcases a PresenterService
that presents a view showcasing a user-defined Metric
. Developers can configure and create the MetricPresenterService
using the MetricsPresenterConfiguration
as defined below:
import Apodini
import ApodiniAnalystPresenter
import ArgumentParser
import Foundation
@main
struct ProcessingWebService: WebService {
@Option var prometheusURL = URL(string: "http://localhost:9092")!
var configuration: Apodini.Configuration {
// Configure the UI Metrics Service with the passed in arguments
MetricsPresenterConfiguration(
prometheusURL: prometheusURL,
metric: Counter(
label: "hotspots_usage",
dimensions: ["job": "processing", "path": "user/{id}/hotspots"]
),
title: "Processing"
)
// ...
}
var content: some Component {
// ...
}
}
Contributions to this project are welcome. Please make sure to read the contribution guidelines and the contributor covenant code of conduct first.
This project is licensed under the MIT License. See License for more information.