This client is designed to connect to any Mastodon instance and interact with it. As of the time of writing this (08th April 2017) the Moya Providers are feature complete with tootsuite/mastodon.
MastodonClient
contains a few convenience methods to create Apps (OAuth Clients) and interact with the API but you should use the Moya Targets directly for the time being (as those are feature complete).
Do not forget to setup you Mastodon base url by setting it in the Settings
singleton before trying to use any of the APIs:
Settings.shared.baseURL = NSURL(string: "https://mastodon.social")!
Given you've got an OAuth Client
let app = App(clientId: "…", clientSecret: "…")
Logging in is as easy as this then:
RxMoyaProvider<Mastodon.OAuth>()
.request(.authenticate(app, username, password))
.mapObject(type: AccessToken.self)
.subscribe { even in … }
Provided login was successful and you've retrieved an AccessToken
you're free to use all the other APIs, e.g. to retrieve your home timeline:
RxMoyaProvider<Mastodon.Timelines>(plugins: [AccessTokenPlugin(token: accessToken.token)])
.request(.home)
.mapArray(type: Status.self)
.subscribe { even in … }
In order to support multitenancy, it is possible to use the endpoint operator to inject the base URL of a server.
Example:
let app = App(clientId: "…", clientSecret: "…")
let url = "https://mastodon.cloud"
RxMoyaProvider<Mastodon.OAuth>(endpointClosure: /url)
.request(.authenticate(app, username, password))
.mapObject(type: AccessToken.self)
.subscribe { even in … }
Please note that the endpoint provided by teh operator overrides the URL stored in the settings singleton.
Xcode 8.3 / Swift 3.1
Alamofire
Moya
Gloss
RxSwift
github "Swiftodon/Mastodon.swift"
- Marcus Kida [email protected]
- Thomas Bonk [email protected]
MastodonClient is available under the MIT license. See the LICENSE file for more info.