❤️ Support my apps ❤️
- Push Hero - pure Swift native macOS application to test push notifications
- PastePal - Pasteboard, note and shortcut manager
- Quick Check - smart todo manager
- Alias - App and file shortcut manager
- My other apps
❤️❤️😇😍🤘❤️❤️
- A Swift implementation of octokit.objc, using RxSwift, Alamofire and Tailor
- Try to use more Swift style as possible
- Note: you may consider using GraphQL https://developer.github.com/v4/
- User: identify a user
- Server: identify server (Github or Github Enterprise)
- Client: make request. If associated with a valid token, it is considered authenticated client
let _ =
Client.signInUsingWebBrowser(Server.dotComServer, scopes: [.Repository])
.flatMap { client in
return client.fetchUserRepositories()
}.subscribeNext { repositories in
repositories.forEach { print($0.name)
}
}
Make your own request using RequestDescriptor
, using syntax from Construction
let requestDescriptor: RequestDescriptor = construct {
$0.path = "repos/\(owner)/\(name)"
$0.etag = "12345"
$0.offset = 2
$0.perPage = 50
$0.parameters["param"] = "value"
$0.headers["header"] = "value"
$0.method = .PUT
}
return enqueue(requestDescriptor).map {
return Parser.one($0)
}
- The
subscribe
gets called many times if there is pagination
client
.fetchUserRepositories()
.subscribeNext { repositories in
// This gets called many times depending pagination
repositories.forEach { print($0.name)
}
- Use
toArray
if we wantsubscribe
to be called once with all the values collected
client
.fetchUserRepositories()
.toArray()
.subscribeNext { repositories: [[Repository]] in
repositories.flatMap({$0}).forEach { print($0.name)
}
- Fetch server metadata
- Native flow
- OAuth flow
- Follow
- Unfollow
- Fetch user info
- Fetch repositories
- Create repository
- Fetch commits
- Fetch pull requests
- Fetch issues
- Watch
- Make pull requests
- Create issue
- Fetch issues
- Fetch organizations
- Fetch teams
- Search repositories
- Fetch user events
- Fetch gists
- Create tree
- Create blob
- Create commit
- Star
- Unstar
- Fetch notifications
GithubSwift is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'GithubSwift'
GithubSwift is also available through Carthage. To install just write into your Cartfile:
github "onmyway133/Github.swift"
Khoa Pham, [email protected]
We would love you to contribute to GithubSwift, check the CONTRIBUTING file for more info.
GithubSwift is available under the MIT license. See the LICENSE file for more info.