GithubHelp home page GithubHelp logo

isabella232 / ringcentral-swift Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ringcentral/ringcentral-swift

0.0 0.0 0.0 1.03 MB

RingCentral Swift Client

Objective-C 0.27% Swift 99.60% Ruby 0.13%

ringcentral-swift's Introduction

RingCentral Swift Client

Build status Coverage Status Twitter

RingCentral Developers is a cloud communications platform which can be accessed via more than 70 APIs. The platform's main capabilities include technologies that enable: Voice, SMS/MMS, Fax, Glip Team Messaging, Data and Configurations.

API Reference and APIs Explorer.

Latest update

Master branch is not up to date and it doesn't work with latest Swift language.

For a working version please check the dev branch of this project.

Requirements

  • iOS 9.0+ / macOS 10.11+ / tvOS 9.0+ / watchOS 2.0+
  • Xcode 8.0+
  • Swift 3.0+

Version requirements

For Swift 3.1 or earlier, use version 0.5.0.

For Swift 4 or later, use the latest version.

Installation

The recommended way to install this framework is via Carthage.

Add the following to your Cartfile:

github "ringcentral/ringcentral-swift"

Denpending on your target platform, run one of the following:

carthage update --platform macOS
carthage update --platform iOS
carthage update --platform tvOS
carthage update --platform watchOS

Built libraries will be available in ./Carthage/Build/.

URL Builder

Given any API endpoint, taking /restapi/v1.0/account/~/extension/~/call-log for example.

You can build its url with code easily:

let restapiVersion = "v1.0"
let accountID = "~"
let extensionId = "~"

URL Builder helps you to build your URL with ease

rc.restapi(restapiVersion).account(accountID).extension(extensionId).callLog()

Please NEVER do string concatenation like below

"/restapi" + restapiVersion + "/account/" + accountID + "/extension/" + extensionId + "/call-log"

Default Value

Default value for restapi is "v1.0"; default value for account and extension are both "~".

If you don't specify an explicit value, default value is used.

So the following two lines are equivalent:

rc.restapi().account().extension()
rc.restapi("v1.0").account("~").extension("~")

Authorization

let rc = RestClient(appKey: "", appSecret: "", production: false)
rc.authorize("username", ext: "", password: "password") { token, error in
    if error == nil {
        print("Authorized!")
    }
}

Token Refresh

By default, there is a background timer calling rc.refresh() periodically, so the authorization never expires.

But if you would like to call refresh manually: rc.autoRefreshToken = false

Token Revoke

When you no longer need the token, don't forget to revoke it: rc.revoke().

Sample for list, get, post, put and delete

list

// /restapi/v1.0/account/~/extension/~/address-book
let addressBook = rc.restapi("v1.0").account("~").extension("~").addressBook()
addressBook.contact().list() { list, error in
    print(list!.paging!.page) // 1
}

post

addressBook.contact().post(parameters: [ "firstName": "Tyler", "lastName": "Long", "homePhone": phoneNumber ]) { contact, error in
    print(contact!.lastName) // Long
}

get

addressBook.contact("\(contact.id!)").get(){ contact, error in
    print(contact.lastName) // Long
}

put

contact.lastName = "Liu"
addressBook.contact("\(contact.id!)").put(parameters: contact.toParameters()) { contact2, error in
    print(contact2.lastName) // Liu
}

delete

addressBook.contact("\(item.id!)").delete() { error in
    print(error == nil) // true
}

Send SMS

let parameters = SmsPath.PostParameters(
    from: CallerInfo(phoneNumber: "123456789"),
    to: [CallerInfo(phoneNumber: "123456789")],
    text: "hello world"
)
rc.restapi().account().extension().sms().post(parameters: parameters) { messageInfo, error in
    if error == nil {
        print("SMS sent!")
    }
}

PubNub Subscription

let subscription = rc.restapi().subscription().new()
subscription.eventFilters.append("/restapi/v1.0/account/~/extension/~/message-store")
subscription.listeners.append { notification in
    print(notification.json!)
    let messageEvent = MessageEvent(JSONString: notification.json!)!
    print(messageEvent.body!.extensionId!)
}

Remove Subscription

When you no longer need a subscription, don't forget to remove it:

subscription.remove()

Send fax

let parameters = FaxPath.PostParameters(to: [CallerInfo(phoneNumber: "1234567890")])
var attachments: [Attachment] = []
attachments.append(Attachment(fileName: "test.pdf", contentType: "application/pdf", data: pdfData))
rc.restapi().account().extension().fax().post(parameters: parameters, attachments: attachments) { messageInfo, error in
    if error == nil {
        print("fax sent")
    }
}

Upload binary file

rc.restapi().account().extension().profileImage().put(imageData: imageData, imageFileName: "test.png") { error in
    if error == nil {
        print("Profile image updated")
    }
}

More sample code

The test cases contain lots of sample code.

License

This project is released under the MIT license.

ringcentral-swift's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.