https://github.com/serhii-londar/GithubAPI
  
  
    Swift implementation of Github REST API v3 
    https://github.com/serhii-londar/GithubAPI
  
api github-api githubapi hacktoberfest rest rest-api swift swift4
        Last synced: 7 months ago 
        JSON representation
    
Swift implementation of Github REST API v3
- Host: GitHub
 - URL: https://github.com/serhii-londar/GithubAPI
 - Owner: serhii-londar
 - License: mit
 - Created: 2018-01-09T16:00:42.000Z (almost 8 years ago)
 - Default Branch: master
 - Last Pushed: 2021-11-02T16:15:19.000Z (about 4 years ago)
 - Last Synced: 2024-10-15T22:21:45.462Z (about 1 year ago)
 - Topics: api, github-api, githubapi, hacktoberfest, rest, rest-api, swift, swift4
 - Language: Swift
 - Homepage:
 - Size: 577 KB
 - Stars: 86
 - Watchers: 4
 - Forks: 23
 - Open Issues: 2
 - 
            Metadata Files:
            
- Readme: README.md
 - License: LICENSE
 
 
Awesome Lists containing this project
- fucking-awesome-swift - GitHubAPI - Implementation of GitHub REST API v3. (Libs / API)
 - awesome-swift - GitHubAPI - Implementation of GitHub REST API v3 (Libs / API)
 - awesome-swift - GitHubAPI - Swift implementation of Github REST API v3 ` 📝 8 months ago ` (API [🔝](#readme))
 - awesome-swift - GitHubAPI - Implementation of GitHub REST API v3. (Libs / API)
 
README
          # GitHubAPI
[](https://travis-ci.org/serhii-londar/GithubAPI)
[](http://cocoapods.org/pods/GithubAPI)
[](http://cocoapods.org/pods/GithubAPI)
[](http://cocoapods.org/pods/GithubAPI)
Swift implementation of GitHub REST api v3. Library support Swift 4.2. Work is in progress. 
Currently supported: 
- [x] [Issues API](https://developer.github.com/v3/issues/).
- [x] [Activity API(Feeds, Notification)](https://developer.github.com/v3/activity/notifications/).
- [x] [Repositories API](https://developer.github.com/v3/repos/).
- [x] [Search API](https://developer.github.com/v3/search/).
- [x] [User API](https://developer.github.com/v3/users/).
TODO:
- [ ] [Activity API (Events, Starring, Watching)](https://developer.github.com/v3/activity/).
- [ ] [Organizations API](https://developer.github.com/v3/orgs/).
- [ ] [Projects API](https://developer.github.com/v3/projects/).
- [ ] [Pull Requests API](https://developer.github.com/v3/pulls/). 
- [ ] [Reactions API](https://developer.github.com/v3/reactions/).
- [ ] [Repositories API](https://developer.github.com/v3/repos/).
- [ ] [Users API (Emails, Followers, Public Keys, GPG Keys, Block Another User)](https://developer.github.com/v3/users/).
- [ ] Documentation.
## Example Usage
### Authentication
#### Basic Authentication
This lib support Basic Authentication with login/password:
```swift
let authentication = BasicAuthentication(username: "username", password: "password")
UserAPI(authentication: authentication).getUser { (response, error) in
	if let response = response {
		print(response)
	} else {
		print(error ?? "")
	}
}
```
#### OAuth2 Token (sent in a header)
If you generate personal access token or receive access token from OAuth2, you can use it with AccessTokenAuthentication:
```swift
let authentication = AccessTokenAuthentication(access_token: "token")
UserAPI(authentication: authentication).getUser(username: "serhii-londar") { (response, error) in
	if let response = response {
		print(response)
	} else {
		print(error ?? "")
	}
}
```
#### OAuth2 Token (sent as a parameter)
If you generate personal access token or receive access token from OAuth2, you can use it in next way:
```swift
let authentication = TokenAuthentication(token: "token")
UserAPI(authentication: authentication).getAllUsers(since: "1") { (reposne, error) in
	if let response = response {
		print(response)
	} else {
		print(error ?? "")
	}
}
```
### Issues API
#### Create Issue:
```swift
let issue = Issue(title: "New Issue")
IssuesAPI(authentication: AccessTokenAuthentication(access_token: "access_token")).createIssue(owner: "owner", repository: "repository", issue: issue) { (response, error) in
	if let response = response {
	} else {
		print(error ?? "")
	}
}
```
#### Update Issue:
```swift
let issue = Issue(title: "Updated Issue")
        IssuesAPI(authentication: AccessTokenAuthentication(access_token: "access_token")).updateIssue(owner: "owner", repository: "repository", number: number, issue: issue) { (response, error) in
	if let response = response {
	} else {
		print(error ?? "")
	}
}
```
### Repositories API
#### Get list of all repositories of user:
```swift
RepositoriesAPI(authentication: AccessTokenAuthentication(access_token: "access_token")).repositories(user: "user", type: .all) { (response, error) in
	if let response = response {
	} else {
		print(error ?? "")
	}
}
```
### Search API
#### Seart all repositories which contains qwer in name:
```swift
SearchAPI().searchRepositories(q: "qwer", page: 1, per_page: 100) { (response, error) in
	if let response = response {
	} else {
		print(error ?? "")
	}
}
```
        
## Example Application
To run the example project, clone the repo, and run `pod install` from the Example directory first. 
Example project contains example app with list of all user's GitHub notification. 
## Requirements
* Xcode 9 or later
* iOS 9.0 or later
* macOS 10.12 or later
* Ubuntu 16.04 or later
* Swift 4.0 or later
## Installation
GitHubAPI is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod 'GithubAPI'
```
## Author
Serhii Londar, serhii.londar@gmail.com
## License
GitHubAPI is available under the MIT license. See the LICENSE file for more info.