Swiftpack.co - Nef10/WealthsimpleDownloader as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Nef10/WealthsimpleDownloader
Swift library to download data from Wealthsimple using the API
.package(url: "https://github.com/Nef10/WealthsimpleDownloader.git", from: "v2.0.0")

WealthsimpleDownloader

CI Status Documentation percentage License: MIT Latest version platforms supported: linux | macOS | iOS | watchOS | tvOS SPM compatible

What

This is a small library to download data from Wealthsimple. It does not support Wealthsimple Trade and currently only supports downloading accounts, positions and transactions. The documentation of the Wealthsimple API I am using can be found at https://developers.wealthsimple.com/. To authenticate I am using the same client id as their web site, which uses the same API as backend.

How

  1. Implement a CredentialStore
Example using the KeychainAccess library
import KeychainAccess
  
class KeyChainCredentialStorage: CredentialStorage {

  let keychain = Keychain(service: "XYZ")

  func save(_ value: String, for key: String) {
      keychain[key] = value
  }

  func read(_ key: String) -> String? {
      keychain[key]
  }

}
  1. Implement an AuthenticationCallback which will ask the user for their username, password and one time password.
  2. Initialize WealthsimpleDownloader with your two implementations: let wealthsimpleDownloader = WealthsimpleDownloader(authenticationCallback: myAuthenticationCallback, credentialStorage: myCredentialStorage)
  3. Call wealthsimpleDownloader.authenticate() { } and wait for the callback
  4. Now you can start retreiving data with the other methods provided on WealthsimpleDownloader like getAccounts or getPositions

Please check out the complete documentation here. You can also have a look at the SwiftBeanCountDownloaderApp which uses this library. If you want to convert the downloaded data into Beancount format, also check out SwiftBeanCountWealthsimpleMapper

Usage

The library supports the Swift Package Manger, so simply add a dependency in your Package.swift:

.package(url: "https://github.com/Nef10/WealthsimpleDownloader.git", .upToNextMajor(from: "X.Y.Z")),

Limitations

Please note that I developed this library for my own needs and there may be bugs. It currently only accesses a very limited scope of the API. Even for the endpoints it implements, there are further limitations:

  • Paging is not supported
  • Only works on Accounts with 2FA enabled

Pull requests to extend the scope or remove limitations are very welcome.

Copyright

While my code is licensed under the MIT License, the source repository may include names or other trademarks of Wealthsimple or other entities; potential usage restrictions for these elements still apply and are not touched by the software license. Same applies for the API design. I am in no way affilliated with Wealthsimple other than beeing customer.

GitHub

link
Stars: 1
Last commit: Yesterday

Ad: Job Offers

iOS Software Engineer @ Perry Street Software
Perry Street Software is Jack’d and SCRUFF. We are two of the world’s largest gay, bi, trans and queer social dating apps on iOS and Android. Our brands reach more than 20 million members worldwide so members can connect, meet and express themselves on a platform that prioritizes privacy and security. We invest heavily into SwiftUI and using Swift Packages to modularize the codebase.

Submit a free job ad (while I'm testing this). The analytics numbers for this website are here.

Release Notes

2.0.0 Protocols
5 days ago

Changes

Source Breaking: Certain Sub type have moved and are now no longer contained in a different type.

🚀 Features

  • Refactor to provide protocols for all public structs @Nef10 (#72)

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics