Latest 0.5.0
Homepage https://github.com/onmyway133/Github.swift
License MIT
Platforms ios 8.0, osx 10.10, requires ARC
Dependencies Tailor, RxSwift, Alamofire, ISO8601, Construction
Authors

Github.swift

CI Status
Version
Carthage Compatible
License
Platform

Description

Usage

Client

  • 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)
    }
  }

Request Descriptor

Make your own request using RequestDescriptor

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)
}

Pagination

  • 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 want subscribe to be called once with all the values collected
client
.fetchUserRepositories()
.toArray()
.subscribeNext { repositories: [[Repository]] in
  repositories.flatMap({$0}).forEach { print($0.name)
}

Features

Metadata

  • Fetch server metadata

Sign in

  • Native flow
  • OAuth flow

User

  • Follow
  • Unfollow
  • Fetch user info

Repository

  • Fetch repositories
  • Create repository
  • Fetch commits
  • Fetch pull requests
  • Fetch issues
  • Watch

Pull request

  • Make pull requests

Issue

  • Create issue
  • Fetch issues

Organization

  • Fetch organizations
  • Fetch teams

Search

  • Search repositories

Event

  • Fetch user events

Gists

  • Fetch gists

Git

  • Create tree
  • Create blob
  • Create commit

Activity

  • Star
  • Unstar

Notification

  • Fetch notifications

Installation

GithubSwift is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'Github.swift'

GithubSwift is also available through Carthage.
To install just write into your Cartfile:

github "onmyway133/Github.swift"

Author

Khoa Pham, [email protected]

Contributing

We would love you to contribute to GithubSwift, check the CONTRIBUTING file for more info.

License

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

Latest podspec

{
    "name": "GithubSwift",
    "summary": "Unofficial Github API client in Swift",
    "version": "0.5.0",
    "homepage": "https://github.com/onmyway133/Github.swift",
    "license": "MIT",
    "authors": {
        "Khoa Pham": "[email protected]"
    },
    "source": {
        "git": "https://github.com/onmyway133/Github.swift.git",
        "tag": "0.5.0"
    },
    "social_media_url": "https://twitter.com/onmyway133",
    "platforms": {
        "ios": "8.0",
        "osx": "10.10"
    },
    "requires_arc": true,
    "ios": {
        "source_files": "Sources/**/*"
    },
    "osx": {
        "source_files": "Sources/**/*"
    },
    "dependencies": {
        "Tailor": [],
        "RxSwift": [
            "~> 2.4"
        ],
        "Alamofire": [
            "~> 3.3"
        ],
        "ISO8601": [
            "~> 0.5"
        ],
        "Construction": []
    }
}

Pin It on Pinterest

Share This