Latest 0.4.0
Homepage https://github.com/s-aska/TwitterAPI
License MIT
Platforms ios 9.0, osx 10.10, requires ARC
Dependencies OAuthSwift, MutableDataScanner
Authors

Build Status
Carthage compatible
[TwitterAPI]()
[TwitterAPI]()
[TwitterAPI]()

This Twitter framework is to both support the OAuth and Social.framework, can handle REST and Streaming API.

warning: DEVELOPER RELEASE

Features

  • Streaming API connection using the NSURLSession
  • Both support the OAuth and Social.framework (iOS only)
  • Both support the iOS and OSX

Usage

Streaming API

import TwitterAPI
import SwiftyJSON

let request = client
    .streaming("https://userstream.twitter.com/1.1/user.json")
    .progress({ (data: NSData) -> Void in
        // The already divided by CRLF ;)
        // https://dev.twitter.com/streaming/overview/processing
        let json = JSON(data: data)
    })
    .completion({ (responseData: NSData?, response: NSURLResponse?, error: NSError?) -> Void in

    })
    .start()

// disconnect
request.stop()

REST API

let parameters = [String: String]()
client
    .get("https://api.twitter.com/1.1/statuses/home_timeline.json", parameters: parameters)
    .response {
        (responseData: NSData?, response: NSHTTPURLResponse?, error: NSError?) -> Void in

    }

// Without parameters
client
    .get("https://api.twitter.com/1.1/statuses/home_timeline.json")
    .response {
        (responseData: NSData?, response: NSHTTPURLResponse?, error: NSError?) -> Void in

    }

// POST
client
    .post("https://api.twitter.com/1.1/statuses/update.json", parameters: parameters)
    .response {
        (responseData: NSData?, response: NSHTTPURLResponse?, error: NSError?) -> Void in

    }

with Alamofire

let client = OAuthClient(
    consumerKey: "",
    consumerSecret: "",
    accessToken: "",
    accessTokenSecret: "")

let url = "https://api.twitter.com/1.1/statuses/update.json"
let parameters = ["status": "Alamofire"]

Alamofire
    .request(client.makeRequest(.POST, url: url, parameters: parameters))
    .reponseJSON { response in

    }

How to get client object

by OAuth

import TwitterAPI

let client = OAuthClient(
    consumerKey: "",
    consumerSecret: "",
    accessToken: "",
    accessTokenSecret: "")

by Social.framework

import Accounts
import TwitterAPI

let client = AccountClient(account: account)

Serialize / Deserialize

Saving and loading can be, for example, using a keychain.

let string = client.serialize

let client = ClientDeserializer.deserialize(client.serialize)

How to use Social.framework

import Accounts
import TwitterAPI

let accountStore = ACAccountStore()
let accountType = accountStore.accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter)

// Prompt the user for permission to their twitter account stored in the phone's settings
accountStore.requestAccessToAccountsWithType(accountType, options: nil) {
    granted, error in

    if !granted {
        let message = error.description
        let alert = UIAlertController(title: "Error", message: message, preferredStyle: .Alert)
        alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
        return
    }

    let accounts = accountStore.accountsWithAccountType(accountType) as! [ACAccount]

    guard let account = accounts.first else {
        let message = "There are no Twitter accounts configured. You can add or create a Twitter account in Settings."
        let alert = UIAlertController(title: "Error", message: message,
            preferredStyle: .Alert)
        alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
        return
    }

    let client = AccountClient(account: account)
    client
        .get("https://api.twitter.com/1.1/statuses/home_timeline.json")
        .response {
            (responseData: NSData?, response: NSHTTPURLResponse?, error: NSError?) -> Void in

        }
}

How to use OAuthSwift

import OAuthSwift
import TwitterAPI

let oauthswift = OAuth1Swift(
    consumerKey:    "YOUR_APP_CONSUMER_KEY",
    consumerSecret: "YOUR_APP_CONSUMER_SECRET",
    requestTokenUrl: "https://api.twitter.com/oauth/request_token",
    authorizeUrl:    "https://api.twitter.com/oauth/authorize",
    accessTokenUrl:  "https://api.twitter.com/oauth/access_token"
)
oauthswift.authorizeWithCallbackURL(NSURL(string: "yourappscheme://success")!,
    success: { (credential, response) -> Void in
        let client = OAuthClient(
            consumerKey: "YOUR_APP_CONSUMER_KEY",
            consumerSecret: "YOUR_APP_CONSUMER_SECRET",
            accessToken: credential.oauth_token,
            accessTokenSecret: credential.oauth_token_secret)
    }) { (error) -> Void in
        let message = error.description
        let alert = UIAlertController(title: "Error", message: message,
            preferredStyle: .Alert)
        alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
        self.presentViewController(alert, animated: true, completion: nil)
    }

// AppDelegate.swift

import UIKit
import OAuthSwift

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(application: UIApplication, openURL url: NSURL,
        sourceApplication: String?, annotation: AnyObject) -> Bool {
        if url.absoluteString.hasPrefix("yourappscheme://success") {
            OAuth1Swift.handleOpenURL(url)
        }

        return true
    }
}

Requirements

  • iOS 9.0+ / Mac OS X 10.10+
  • Swift 3 and Xcode 8

Installation

Carthage

Add the following line to your Cartfile

github "s-aska/TwitterAPI"

License

TwitterAPI is released under the MIT license. See LICENSE for details.

Latest podspec

{
    "name": "TwitterAPI",
    "version": "0.4.0",
    "summary": "This Twitter framework is to both support the OAuth and Social.framework, can handle REST and Streaming API.",
    "description": "Featuresn- Streaming API connection using the NSURLSessionn- Both support the OAuth and Social.framework (iOS only)n- Both support the iOS and OSX",
    "homepage": "https://github.com/s-aska/TwitterAPI",
    "license": "MIT",
    "authors": {
        "aska": "[email protected]"
    },
    "social_media_url": "https://twitter.com/su_aska",
    "source": {
        "git": "https://github.com/s-aska/TwitterAPI.git",
        "tag": "0.4.0"
    },
    "platforms": {
        "ios": "9.0",
        "osx": "10.10"
    },
    "requires_arc": true,
    "dependencies": {
        "OAuthSwift": [
            "= 1.0.0"
        ],
        "MutableDataScanner": []
    },
    "source_files": "TwitterAPI/*.swift",
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This