Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: 10 days ago
JSON representation

Swift implementation of Github REST API v3

Awesome Lists containing this project

README

        

# GitHubAPI

[![CI Status](http://img.shields.io/travis/serhii-londar/GithubAPI.svg?style=flat)](https://travis-ci.org/serhii-londar/GithubAPI)
[![Version](https://img.shields.io/cocoapods/v/GithubAPI.svg?style=flat)](http://cocoapods.org/pods/GithubAPI)
[![License](https://img.shields.io/cocoapods/l/GithubAPI.svg?style=flat)](http://cocoapods.org/pods/GithubAPI)
[![Platform](https://img.shields.io/cocoapods/p/GithubAPI.svg?style=flat)](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, [email protected]

## License

GitHubAPI is available under the MIT license. See the LICENSE file for more info.