Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/96-problems/medium-sdk-swift
A swift SDK for Medium's OAuth2 API https://medium.com
https://github.com/96-problems/medium-sdk-swift
Last synced: 3 months ago
JSON representation
A swift SDK for Medium's OAuth2 API https://medium.com
- Host: GitHub
- URL: https://github.com/96-problems/medium-sdk-swift
- Owner: 96-problems
- License: other
- Created: 2016-05-01T06:03:47.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-03-09T19:07:28.000Z (over 7 years ago)
- Last Synced: 2024-08-02T12:15:29.074Z (3 months ago)
- Language: Swift
- Size: 70.3 KB
- Stars: 11
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-ios - Medium SDK - Swift - Unofficial Medium API SDK in Swift with sample project. (SDK / Unofficial)
- awesome-ios-star - Medium SDK - Swift - Unofficial Medium API SDK in Swift with sample project. (SDK / Unofficial)
README
Medium SDK - Swift
===============
> A library to allow access to Medium API for any Swift iOS application.[![Swift Version][swift-image]][swift-url]
[![License][license-image]][license-url]
[![Platform][platform-image]][platform-url]## Features
- [x] Medium.com authorization & token handling
- [x] Login state saved in user defaults
- [x] Supported scopes: basicProfile, listPublications, publishPost
- [x] Implemented all the related requests from the [Medium API docs](https://github.com/Medium/medium-api-docs)
- [ ] Support Safari View Controller## Compatibility
- iOS 9.0+
~- osx 10.10~## Installation
```
pod 'MediumSDKSwift'
```and run `pod install` in the directory to load dependencies.
## Configuration
Add your `MEDIUM_CLIENT_ID`, `MEDIUM_CLIENT_SECRET`, `MEDIUM_CALLBACK_URL`
in `Build settings ` -> `User-Define`In the project right click on your `Info.plist` file,
choose "Open As" - "Source code" and add these lines :```
CFBundleURLTypes
CFBundleURLName
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleURLSchemes
mediumswift
MediumCallbackURL
$(MEDIUM_CALLBACK_URL)MediumClientID
$(MEDIUM_CLIENT_ID)MediumClientSecret
$(MEDIUM_CLIENT_SECRET)```
right before the tag.
Handle the callback in App Delegate:
```
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
if (url.host == "mediumswift-callback") {
OAuthSwift.handleOpenURL(url)
}
return true
}
```Note that the redirect is done via a free Heroku app and it's highly recommended to setup your own redirect service by cloning and running [this repo](https://github.com/drinkius/mediumswift.herokuapp.com) (courtesy of the original [oauthswift.herokuapp.com](https://github.com/dongri/oauthswift.herokuapp.com) repo). Change all the `mediumswift` strings in the repo to the name of your app and make related changes in `Info.plist` and `App Delegate` files. The deployment with Heroku is easy - just link your GitHub repo and the app is built automatically.
You are all set!
## Usage
``MediumSDKManager`` class is designed as a singleton, you can access all it's methods by calling a shared instance:
```
let mediumSession = MediumSDKManager.sharedInstance
```List of methods of the ``MediumSDKManager`` class:
* **Authorize**, completion handler returns state: success/failure and user's medium token or error string:
```
doOAuthMedium(completionHandler: (String, String) -> Void)
```* **Check login credentials**, completion handler returns state: success/failure and medium token or error string:
```
checkCred(completionHandler: (String, String) -> Void)
```* **Get current user ID**, completion handler returns state: success/failure and user ID or error string:
```
getUserID(completionHandler: (String, String) -> Void)
```* **Get current Medium token**, completion handler returns state: success/failure and medium token or error string:
```
getToken(completionHandler: (String, String) -> Void)
```* **Sign out**, completion handler returns state: success/failure, and message or error string:
```
signOutMedium(completionHandler: (String, String) -> Void)
```* **Get current user's credentials**, completion handler returns state: success/failure, and user ID as or error string:
```
ownCredentialsRequest(completionHandler: (String, String) -> Void)
```* **Get list of current user's publications**, completion handler returns state: success/failure, number of users publications or error string and publications JSON if present:
```
userPublicationsListRequest(completionHandler: (String, String, JSON) -> Void)
```* **Get list of a publication's contributors**, completion handler returns state: success/failure, number of users publications or error string and publications JSON if present:
```
getListOfContributors(publicationId: String, completionHandler: (String, String, JSON) -> Void)
```* **Create new post**, completion handler returns state: success/failure, and message or error string:
```
createPost(title: String, contentFormat: String, content: String, canonicalUrl: String?=nil, tags: [String]?=nil, publishStatus: MediumPublishStatus?=nil, license: MediumLicense?=nil, completionHandler: (String, String) -> Void)
```* **Create a post under existing publication**, completion handler returns state: success/failure, and message or error string:
```
createPostUnderPublication(rootPublication: String, title: String, contentFormat: String, content: String, canonicalUrl: String?=nil, tags: [String]?=nil, publishStatus: MediumPublishStatus?=nil, license: MediumLicense?=nil, completionHandler: (String, String) -> Void)
```Note that publish status and licence fields are coded as enums with all the possible states of these parameters, when creating a publication just use the proper values.
## Release History
* 0.1.1
* Remove OSX
* 0.1.0
* Update syntax for Swift 3.0
* Drop support <= iOS 9.0
* Update dependencies
* 0.0.4
* add User-defnie variables
* current version
* 0.0.3
* bug fixies
* 0.0.2
* update dependencies
* 0.0.1
* The first release## Contribute
We would love for you to contribute to **Medium SDK - Swift**, check the ``LICENSE`` file for more info.
## Meta
Original author:
- Alexander Telegin – [@drinkius](https://github.com/drinkius) – [email protected]Maintained:
- Fernando Bass = [@ferbass](https://github.com/ferbass)Contributions by
- Reejo Samuel - [@reejosamuel](https://github.com/reejosamuel)Created as a part of development internship, distributed under the MIT license. See ``LICENSE`` for more information.
https://github.com/96-problems/medium-sdk-swift
[swift-image]:https://img.shields.io/badge/swift-2.2-orange.svg
[swift-url]: https://swift.org/
[license-image]: https://img.shields.io/badge/License-MIT-blue.svg
[license-url]: LICENSE
[platform-image]: https://img.shields.io/badge/platform-ios-green.svg
[platform-url]: http://www.apple.com