Add Client.listResourceTemplates method (#125)
* adds listResourceTemplates to client for #124 * add pagination to resources/templates/list from @mattt Co-authored-by: Mattt <mattt@loopwork.com> * adds cursor functionality to ListResourceTemplates * updates the client method to use the updated signature --------- Co-authored-by: Mattt <mattt@loopwork.com>
This commit is contained in:
parent
14fddc44c4
commit
609cdc709b
2 changed files with 29 additions and 2 deletions
|
|
@ -578,6 +578,20 @@ public actor Client {
|
|||
_ = try await send(request)
|
||||
}
|
||||
|
||||
public func listResourceTemplates(cursor: String? = nil) async throws -> (
|
||||
templates: [Resource.Template], nextCursor: String?
|
||||
) {
|
||||
try validateServerCapability(\.resources, "Resources")
|
||||
let request: Request<ListResourceTemplates>
|
||||
if let cursor = cursor {
|
||||
request = ListResourceTemplates.request(.init(cursor: cursor))
|
||||
} else {
|
||||
request = ListResourceTemplates.request(.init())
|
||||
}
|
||||
let result = try await send(request)
|
||||
return (templates: result.templates, nextCursor: result.nextCursor)
|
||||
}
|
||||
|
||||
// MARK: - Tools
|
||||
|
||||
public func listTools(cursor: String? = nil) async throws -> (
|
||||
|
|
|
|||
|
|
@ -149,17 +149,30 @@ public enum ReadResource: Method {
|
|||
public enum ListResourceTemplates: Method {
|
||||
public static let name: String = "resources/templates/list"
|
||||
|
||||
public typealias Parameters = Empty
|
||||
public struct Parameters: NotRequired, Hashable, Codable, Sendable {
|
||||
public let cursor: String?
|
||||
|
||||
public init() {
|
||||
self.cursor = nil
|
||||
}
|
||||
|
||||
public init(cursor: String) {
|
||||
self.cursor = cursor
|
||||
}
|
||||
}
|
||||
|
||||
public struct Result: Hashable, Codable, Sendable {
|
||||
public let templates: [Resource.Template]
|
||||
public let nextCursor: String?
|
||||
|
||||
public init(templates: [Resource.Template]) {
|
||||
public init(templates: [Resource.Template], nextCursor: String? = nil) {
|
||||
self.templates = templates
|
||||
self.nextCursor = nextCursor
|
||||
}
|
||||
|
||||
private enum CodingKeys: String, CodingKey {
|
||||
case templates = "resourceTemplates"
|
||||
case nextCursor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue