@@ -37,15 +37,6 @@ enum Github {
3737 return decoder
3838 }
3939
40- @available ( * , deprecated)
41- static func rateLimit( response: ClientResponse ) -> Int ? {
42- guard
43- let header = response. headers. first ( name: " X-RateLimit-Remaining " ) ,
44- let limit = Int ( header)
45- else { return nil }
46- return limit
47- }
48-
4940 static func rateLimit( response: HTTPClient . Response ) -> Int ? {
5041 guard
5142 let header = response. headers. first ( name: " X-RateLimit-Remaining " ) ,
@@ -54,13 +45,6 @@ enum Github {
5445 return limit
5546 }
5647
57- @available ( * , deprecated)
58- static func isRateLimited( _ response: ClientResponse ) -> Bool {
59- guard let limit = rateLimit ( response: response) else { return false }
60- AppMetrics . githubRateLimitRemainingCount? . set ( limit)
61- return response. status == . forbidden && limit == 0
62- }
63-
6448 static func isRateLimited( _ response: HTTPClient . Response ) -> Bool {
6549 guard let limit = rateLimit ( response: response) else { return false }
6650 AppMetrics . githubRateLimitRemainingCount? . set ( limit)
@@ -95,47 +79,13 @@ extension Github {
9579 case readme
9680 }
9781
98- @available ( * , deprecated)
99- static func apiUri( owner: String , repository: String , resource: Resource ) -> URI {
100- switch resource {
101- case . license, . readme:
102- return URI ( string: " https://api.github.com/repos/ \( owner) / \( repository) / \( resource. rawValue) " )
103- }
104- }
105-
10682 static func apiURL( owner: String , repository: String , resource: Resource ) -> String {
10783 switch resource {
10884 case . license, . readme:
10985 return " https://api.github.com/repos/ \( owner) / \( repository) / \( resource. rawValue) "
11086 }
11187 }
11288
113- @available ( * , deprecated)
114- static func fetch( client: Client , uri: URI , headers: [ ( String , String ) ] = [ ] ) async throws -> ( content: String , etag: String ? ) {
115- guard let token = Current . githubToken ( ) else {
116- throw Error . missingToken
117- }
118-
119- let response = try await client. get ( uri, headers: defaultHeaders ( with: token) . adding ( contentsOf: headers) )
120-
121- guard !isRateLimited( response) else {
122- Current . logger ( ) . critical ( " rate limited while fetching uri \( uri) " )
123- throw Error . requestFailed ( . tooManyRequests)
124- }
125-
126- guard response. status == . ok else {
127- Current . logger ( ) . warning ( " Github.fetch of ' \( uri. path) ' failed with status \( response. status) " )
128- throw Error . requestFailed ( response. status)
129- }
130-
131- guard let body = response. body else {
132- Current . logger ( ) . warning ( " Github.fetch has no body " )
133- throw Error . noBody
134- }
135-
136- return ( body. asString ( ) , response. headers. first ( name: . eTag) )
137- }
138-
13989 static func fetch( url: String , headers: [ ( String , String ) ] = [ ] ) async throws -> ( content: String , etag: String ? ) {
14090 guard let token = Current . githubToken ( ) else {
14191 throw Error . missingToken
@@ -163,26 +113,6 @@ extension Github {
163113 return ( body. asString ( ) , response. headers. first ( name: . eTag) )
164114 }
165115
166- @available ( * , deprecated)
167- static func fetchResource< T: Decodable > ( _ type: T . Type , client: Client , uri: URI ) async throws -> T {
168- guard let token = Current . githubToken ( ) else {
169- throw Error . missingToken
170- }
171-
172- let response = try await client. get ( uri, headers: defaultHeaders ( with: token) )
173-
174- guard !isRateLimited( response) else {
175- Current . logger ( ) . critical ( " rate limited while fetching resource \( uri) " )
176- throw Error . requestFailed ( . tooManyRequests)
177- }
178-
179- guard response. status == . ok else {
180- throw Error . requestFailed ( response. status)
181- }
182-
183- return try response. content. decode ( T . self, using: decoder)
184- }
185-
186116 static func fetchResource< T: Decodable > ( _ type: T . Type , url: String ) async throws -> T {
187117 guard let token = Current . githubToken ( ) else {
188118 throw Error . missingToken
@@ -239,46 +169,12 @@ extension Github {
239169
240170extension Github {
241171
242- @available ( * , deprecated)
243- static let graphQLApiUri = URI ( string: " https://api.github.com/graphql " )
244172 static let graphQLApiURL = " https://api.github.com/graphql "
245173
246174 struct GraphQLQuery : Content {
247175 var query : String
248176 }
249177
250- @available ( * , deprecated)
251- static func fetchResource< T: Decodable > ( _ type: T . Type , client: Client , query: GraphQLQuery ) async throws ( Github. Error) -> T {
252- guard let token = Current . githubToken ( ) else {
253- throw Error . missingToken
254- }
255-
256- let response : ClientResponse
257- do {
258- response = try await client. post ( Self . graphQLApiUri, headers: defaultHeaders ( with: token) ) {
259- try $0. content. encode ( query)
260- }
261- } catch {
262- throw . postRequestFailed( graphQLApiUri. string, error)
263- }
264-
265- guard !isRateLimited( response) else {
266- Current . logger ( ) . critical ( " rate limited while fetching resource \( T . self) " )
267- throw Error . requestFailed ( . tooManyRequests)
268- }
269-
270- guard response. status == . ok else {
271- Current . logger ( ) . warning ( " fetchResource< \( T . self) > request failed with status \( response. status) " )
272- throw Error . requestFailed ( response. status)
273- }
274-
275- do {
276- return try response. content. decode ( T . self, using: decoder)
277- } catch {
278- throw . decodeContentFailed( graphQLApiUri. string, error)
279- }
280- }
281-
282178 static func fetchResource< T: Decodable > ( _ type: T . Type , query: GraphQLQuery ) async throws ( Github. Error) -> T {
283179 guard let token = Current . githubToken ( ) else {
284180 throw Error . missingToken
0 commit comments