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)
|
_ = 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
|
// MARK: - Tools
|
||||||
|
|
||||||
public func listTools(cursor: String? = nil) async throws -> (
|
public func listTools(cursor: String? = nil) async throws -> (
|
||||||
|
|
|
||||||
|
|
@ -149,17 +149,30 @@ public enum ReadResource: Method {
|
||||||
public enum ListResourceTemplates: Method {
|
public enum ListResourceTemplates: Method {
|
||||||
public static let name: String = "resources/templates/list"
|
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 struct Result: Hashable, Codable, Sendable {
|
||||||
public let templates: [Resource.Template]
|
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.templates = templates
|
||||||
|
self.nextCursor = nextCursor
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum CodingKeys: String, CodingKey {
|
private enum CodingKeys: String, CodingKey {
|
||||||
case templates = "resourceTemplates"
|
case templates = "resourceTemplates"
|
||||||
|
case nextCursor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue