Skip to content

Commit 1ca0388

Browse files
committed
fix: definig github.user()
1 parent a5b7850 commit 1ca0388

3 files changed

Lines changed: 48 additions & 3 deletions

File tree

Sources/Github/GitHubAPI/Gitignore/GitIgnoreTemplate.swift renamed to Sources/Github/GitHubAPI/Gitignore/GetGitignoreTemplate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// GitIgnoreTemplate.swift
2+
// GetGitignoreTemplate.swift
33
//
44
//
55
// Created by Asiel Cabrera Gonzalez on 9/14/23.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//
2+
// GetUser.swift
3+
//
4+
//
5+
// Created by Asiel Cabrera Gonzalez on 9/14/23.
6+
//
7+
8+
import Foundation
9+
import HttpClient
10+
import HTTPTypes
11+
12+
@available(macOS 13.0, *)
13+
extension GitHub {
14+
/// Get a specific user by username
15+
/// - Parameter username: The username of the user to retrieve
16+
/// - Returns: User
17+
public func user(username: String) async throws -> User {
18+
let path = "/users/\(username)"
19+
let method: HTTPRequest.Method = .get
20+
let endpoint = baseURL.appending(path: path)
21+
22+
let request = HTTPRequest(
23+
method: method,
24+
url: endpoint,
25+
queries: [:],
26+
headers: headers
27+
)
28+
29+
let (data, _) = try await session.data(for: request)
30+
31+
let user = try decode(User.self, from: data)
32+
return user
33+
}
34+
}

Tests/Github-toolkitTests/Github_toolkitTests.swift

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import Testing
2+
import Foundation
23
@testable import Github_toolkit
34
@testable import HttpClient
45
@testable import Core
@@ -187,19 +188,29 @@ func testUserModelDecoding() throws {
187188
"login": "testuser",
188189
"node_id": "MDQ6VXNlcjE=",
189190
"avatar_url": "https://github.com/images/error/testuser_happy.gif",
191+
"gravatar_id": "",
190192
"url": "https://api.github.com/users/testuser",
193+
"html_url": "https://github.com/testuser",
194+
"followers_url": "https://api.github.com/users/testuser/followers",
195+
"following_url": "https://api.github.com/users/testuser/following{/other_user}",
196+
"gists_url": "https://api.github.com/users/testuser/gists{/gist_id}",
197+
"starred_url": "https://api.github.com/users/testuser/starred{/owner}{/repo}",
198+
"subscriptions_url": "https://api.github.com/users/testuser/subscriptions",
199+
"organizations_url": "https://api.github.com/users/testuser/orgs",
200+
"repos_url": "https://api.github.com/users/testuser/repos",
201+
"events_url": "https://api.github.com/users/testuser/events{/privacy}",
202+
"received_events_url": "https://api.github.com/users/testuser/received_events",
191203
"type": "User",
192204
"site_admin": false
193205
}
194206
"""
195207

196208
let data = json.data(using: .utf8)!
197209
let decoder = JSONDecoder()
198-
decoder.keyDecodingStrategy = .convertFromSnakeCase
199210

200211
let user = try decoder.decode(User.self, from: data)
201212
#expect(user.id == 1)
202-
#expect(user.login == "testuser")
213+
#expect(user.userID == "testuser")
203214
#expect(user.siteAdmin == false)
204215
}
205216

0 commit comments

Comments
 (0)