Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion Sources/Twift+API.swift
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ public struct TwitterAPIDataAndIncludes<Resource: Codable, Includes: Codable>: C
/// A response object from the Twitter API containing the requested object(s) in the `data` property, expansions in the `includes` property, and additional information (such as pagination tokens) in the `meta` property
public struct TwitterAPIDataIncludesAndMeta<Resource: Codable, Includes: Codable, Meta: Codable>: Codable {
/// The requested object(s)
public let data: Resource
public let data: [Resource]

/// Any requested expansions
public let includes: Includes?
Expand All @@ -353,6 +353,14 @@ public struct TwitterAPIDataIncludesAndMeta<Resource: Codable, Includes: Codable

/// Any errors associated with the request
public let errors: [TwitterAPIError]?

public init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.data = try container.decodeIfPresent([Resource].self, forKey: .data) ?? []
self.includes = try container.decodeIfPresent(Includes.self, forKey: .includes)
self.meta = try container.decodeIfPresent(Meta.self, forKey: .meta)
self.errors = try container.decodeIfPresent([TwitterAPIError].self, forKey: .errors)
}
}

internal enum HTTPMethod: String {
Expand Down
2 changes: 1 addition & 1 deletion Sources/Twift+Blocks.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down
2 changes: 1 addition & 1 deletion Sources/Twift+Bookmarks.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ extension Twift {
expansions: [Tweet.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]
if let paginationToken = paginationToken { queryItems.append(URLQueryItem(name: "pagination_token", value: paginationToken)) }

Expand Down
4 changes: 2 additions & 2 deletions Sources/Twift+Follows.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down Expand Up @@ -53,7 +53,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down
4 changes: 2 additions & 2 deletions Sources/Twift+Likes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]
if let paginationToken = paginationToken { queryItems.append(URLQueryItem(name: "pagination_token", value: paginationToken)) }

Expand All @@ -70,7 +70,7 @@ extension Twift {
expansions: [Tweet.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]
if let paginationToken = paginationToken { queryItems.append(URLQueryItem(name: "pagination_token", value: paginationToken)) }

Expand Down
12 changes: 6 additions & 6 deletions Sources/Twift+Lists.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ extension Twift {
expansions: [Tweet.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down Expand Up @@ -65,7 +65,7 @@ extension Twift {
expansions: [List.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[List], List.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<List, List.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down Expand Up @@ -153,7 +153,7 @@ extension Twift {
expansions: [List.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[List], List.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<List, List.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down Expand Up @@ -181,7 +181,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down Expand Up @@ -264,7 +264,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand All @@ -291,7 +291,7 @@ extension Twift {
expansions: [List.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[List], List.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<List, List.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down
2 changes: 1 addition & 1 deletion Sources/Twift+Mutes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ extension Twift {
expansions: [User.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 100
) async throws -> TwitterAPIDataIncludesAndMeta<[User], User.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<User, User.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down
2 changes: 1 addition & 1 deletion Sources/Twift+Retweets.swift
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ extension Twift {
expansions: [Tweet.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]

if let paginationToken = paginationToken {
Expand Down
4 changes: 2 additions & 2 deletions Sources/Twift+Search.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ extension Twift {
nextToken: String? = nil,
sinceId: Tweet.ID? = nil,
untilId: Tweet.ID? = nil
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [
URLQueryItem(name: "max_results", value: "\(maxResults)"),
URLQueryItem(name: "query", value: query),
Expand Down Expand Up @@ -66,7 +66,7 @@ extension Twift {
nextToken: String? = nil,
sinceId: Tweet.ID? = nil,
untilId: Tweet.ID? = nil
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [
URLQueryItem(name: "max_results", value: "\(maxResults)"),
URLQueryItem(name: "query", value: query),
Expand Down
6 changes: 3 additions & 3 deletions Sources/Twift+Tweets.swift
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ extension Twift {
expansions: [Tweet.Expansions] = [],
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]
if let paginationToken = paginationToken { queryItems.append(URLQueryItem(name: "pagination_token", value: paginationToken)) }
if let exclude = exclude { queryItems.append(URLQueryItem(name: "exclude", value: exclude.map(\.rawValue).joined(separator: ","))) }
Expand Down Expand Up @@ -105,7 +105,7 @@ extension Twift {
untilId: Tweet.ID? = nil,
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]
if let paginationToken = paginationToken { queryItems.append(URLQueryItem(name: "pagination_token", value: paginationToken)) }
if let exclude = exclude { queryItems.append(URLQueryItem(name: "exclude", value: exclude.map(\.rawValue).joined(separator: ","))) }
Expand Down Expand Up @@ -145,7 +145,7 @@ extension Twift {
untilId: Tweet.ID? = nil,
paginationToken: String? = nil,
maxResults: Int = 10
) async throws -> TwitterAPIDataIncludesAndMeta<[Tweet], Tweet.Includes, Meta> {
) async throws -> TwitterAPIDataIncludesAndMeta<Tweet, Tweet.Includes, Meta> {
var queryItems = [URLQueryItem(name: "max_results", value: "\(maxResults)")]
if let paginationToken = paginationToken { queryItems.append(URLQueryItem(name: "pagination_token", value: paginationToken)) }
if let exclude = exclude { queryItems.append(URLQueryItem(name: "exclude", value: exclude.map(\.rawValue).joined(separator: ","))) }
Expand Down