Skip to content

Commit

Permalink
Add JetpackAIServiceRemote/getAssistantFeatureDetails (#805)
Browse files Browse the repository at this point in the history
  • Loading branch information
kean authored May 24, 2024
2 parents c064bf5 + ee0f15c commit 686e007
Show file tree
Hide file tree
Showing 3 changed files with 97 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import Foundation

public final class JetpackAssistantFeatureDetails: Codable {
public let hasFeature: Bool
/// Returns `true` if you are out of limit for the current plan.
public let isOverLimit: Bool
/// The all-time request count.
public let requestsCount: Int
/// The request limit for a free plan.
public let requestsLimit: Int
/// Contains data about the user plan.
public let currentTier: Tier?
public let usagePeriod: UsagePeriod?
public let isSiteUpdateRequired: Bool?
public let upgradeType: String?
public let nextTier: Tier?
public let tierPlans: [Tier]?
public let tierPlansEnabled: Bool?
public let costs: Costs?

public struct Tier: Codable {
public let slug: String?
public let limit: Int
public let value: Int
public let readableLimit: String?

enum CodingKeys: String, CodingKey {
case slug, limit, value
case readableLimit = "readable-limit"
}
}

public struct UsagePeriod: Codable {
public let currentStart: String?
public let nextStart: String?
public let requestsCount: Int

enum CodingKeys: String, CodingKey {
case currentStart = "current-start"
case nextStart = "next-start"
case requestsCount = "requests-count"
}
}

public struct Costs: Codable {
public let jetpackAILogoGenerator: JetpackAILogoGenerator
public let featuredPostImage: FeaturedPostImage

enum CodingKeys: String, CodingKey {
case jetpackAILogoGenerator = "jetpack-ai-logo-generator"
case featuredPostImage = "featured-post-image"
}
}

public struct FeaturedPostImage: Codable {
public let image: Int
}

public struct JetpackAILogoGenerator: Codable {
public let logo: Int
}

enum CodingKeys: String, CodingKey {
case hasFeature = "has-feature"
case isOverLimit = "is-over-limit"
case requestsCount = "requests-count"
case requestsLimit = "requests-limit"
case usagePeriod = "usage-period"
case isSiteUpdateRequired = "site-require-upgrade"
case upgradeType = "upgrade-type"
case currentTier = "current-tier"
case nextTier = "next-tier"
case tierPlans = "tier-plans"
case tierPlansEnabled = "tier-plans-enabled"
case costs
}
}
8 changes: 8 additions & 0 deletions Sources/WordPressKit/Services/JetpackAIServiceRemote.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import Foundation

public final class JetpackAIServiceRemote: SiteServiceRemoteWordPressComREST {

/// Returns information about your current tier, requests limit, and more.
public func getAssistantFeatureDetails() async throws -> JetpackAssistantFeatureDetails {
let path = path(forEndpoint: "sites/\(siteID)/jetpack-ai/ai-assistant-feature", withVersion: ._2_0)
let response = await wordPressComRestApi.perform(.get, URLString: path, type: JetpackAssistantFeatureDetails.self)
return try response.get().body
}

/// Returns short-lived JWT token (lifetime is in minutes).
public func getAuthorizationToken() async throws -> String {
struct Response: Decodable {
Expand Down
12 changes: 12 additions & 0 deletions WordPressKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
019C5B8B2BD59CE000A69DB0 /* StatsEmailsSummaryData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 019C5B892BD59CE000A69DB0 /* StatsEmailsSummaryData.swift */; };
0847B92C2A4442730044D32F /* IPLocationRemote.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0847B92B2A4442730044D32F /* IPLocationRemote.swift */; };
08C7493E2A45EA11000DA0E2 /* IPLocationRemoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C7493D2A45EA11000DA0E2 /* IPLocationRemoteTests.swift */; };
0C0791B22BFE7DE50049C06E /* JetpackAssistantFeatureDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0791B12BFE7DE50049C06E /* JetpackAssistantFeatureDetails.swift */; };
0C1C08412B9CD79900E52F8C /* PostServiceRemoteExtended.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C1C08402B9CD79900E52F8C /* PostServiceRemoteExtended.swift */; };
0C1C08432B9CD8D200E52F8C /* PostServiceRemoteREST+Extended.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C1C08422B9CD8D200E52F8C /* PostServiceRemoteREST+Extended.swift */; };
0C1C08452B9CDB0B00E52F8C /* PostServiceRemoteXMLRPC+Extended.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C1C08442B9CDB0B00E52F8C /* PostServiceRemoteXMLRPC+Extended.swift */; };
Expand Down Expand Up @@ -770,6 +771,7 @@
019C5B892BD59CE000A69DB0 /* StatsEmailsSummaryData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatsEmailsSummaryData.swift; sourceTree = "<group>"; };
0847B92B2A4442730044D32F /* IPLocationRemote.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPLocationRemote.swift; sourceTree = "<group>"; };
08C7493D2A45EA11000DA0E2 /* IPLocationRemoteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IPLocationRemoteTests.swift; sourceTree = "<group>"; };
0C0791B12BFE7DE50049C06E /* JetpackAssistantFeatureDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JetpackAssistantFeatureDetails.swift; sourceTree = "<group>"; };
0C1C08402B9CD79900E52F8C /* PostServiceRemoteExtended.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostServiceRemoteExtended.swift; sourceTree = "<group>"; };
0C1C08422B9CD8D200E52F8C /* PostServiceRemoteREST+Extended.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PostServiceRemoteREST+Extended.swift"; sourceTree = "<group>"; };
0C1C08442B9CDB0B00E52F8C /* PostServiceRemoteXMLRPC+Extended.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PostServiceRemoteXMLRPC+Extended.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1560,6 +1562,14 @@
path = Emails;
sourceTree = "<group>";
};
0C0791B02BFE7DDB0049C06E /* Assistant */ = {
isa = PBXGroup;
children = (
0C0791B12BFE7DE50049C06E /* JetpackAssistantFeatureDetails.swift */,
);
path = Assistant;
sourceTree = "<group>";
};
3297E1DC2564649D00287D21 /* Scan */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -1741,6 +1751,7 @@
3FE2E93F2BB11038002CA2E1 /* Models */ = {
isa = PBXGroup;
children = (
0C0791B02BFE7DDB0049C06E /* Assistant */,
3FE2E93D2BB1100F002CA2E1 /* Atomic */,
3FE2E93C2BB10FF1002CA2E1 /* Blaze */,
3FE2E9392BB10F67002CA2E1 /* Plugins */,
Expand Down Expand Up @@ -3355,6 +3366,7 @@
4041405E220F9EF500CF7C5B /* StatsDotComFollowersInsight.swift in Sources */,
74650F721F0EA1A700188EDB /* GravatarServiceRemote.swift in Sources */,
B5969E1D20A49AC4005E9DF1 /* NSString+MD5.m in Sources */,
0C0791B22BFE7DE50049C06E /* JetpackAssistantFeatureDetails.swift in Sources */,
01438D3B2B6A36BF0097D60A /* StatsTotalsSummaryData.swift in Sources */,
4A68E3E1294076C1004AC3DC /* RemoteReaderSiteInfo.swift in Sources */,
8236EB4D2024B9F8007C7CF9 /* RemoteBlogJetpackModulesSettings.swift in Sources */,
Expand Down

0 comments on commit 686e007

Please sign in to comment.