Skip to content

Manage GitHub access tokens, ssh keys and other git provider credentials via SwiftUI and sync securely across the iCloud keychain

License

Notifications You must be signed in to change notification settings

joehinkle11/GitProviders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Git Providers

This package allows for the management of git hosting provider access tokens, credentials and ssh keys stored securely in Keychain with simple SwiftUI views.

Screenshots

image

Click here for more screenshots

image

image

image image

Example Usage

import SwiftUI
import GitProviders
import KeychainAccess

let gitProviderStore = GitProviderStore(with: Keychain())

struct ContentView: View {
    var body: some View {
        GitProvidersView(gitProviderStore: gitProviderStore, appName: "GitProvidersExample")
    }
}

Running Tests

Extract FakeCreds.zip and dump it at Tests/GitAPITests/FakeCreds and fill out your credentials you'd like to test.

API

We can interact with the GitHub, Bitbucket and GitLab API through their shared base class GitAPI. This allows clients to not worry about which API the user is using. So for example, a client could decide to provide it's users a list of their repositories. For user A who logged in with GitHub, they will automatically interact with the GitHub API, but user B who logged in with GitLab will automatically interact with the GitLab API. Meanwhile the client doesn't know the difference between the types GitHubAPI and GitLabAPI, and is just consuming and interacting with the base GitAPI.

To pull this off, there are a set of shared models under the folder Sources/GitAPI/APIModels/Internal. These are where fictional models will be put.

For example:

Internal/RepoModel.swift contains struct RepoModel GitHub/RepoModel.swift contains struct BitBucketRepoModel BitBucket/RepoModel.swift contains struct GitLablRepoModel GitLabl/RepoModel.swift contains struct GitHubRepoModel

BitBucketRepoModel, GitLablRepoModel, and GitHubRepoModel will all be internal to the Swift Package, but RepoModel will be public for the client to use. This way the client is never directly dealing with an API detail specific to GitHub and unrelated to BitBucket, and instead just focuses on the desired general function.

About

Manage GitHub access tokens, ssh keys and other git provider credentials via SwiftUI and sync securely across the iCloud keychain

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages