streem 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/src/streem.rb +21 -0
- data/src/streem_token_builder.rb +51 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5f56ca936fa92efe7d634be3dcbb540c6922cff39761ba9089248e06f53fad64
|
4
|
+
data.tar.gz: ed959b2683c58b9e009c4c633ceb012f9271ba66a74e30237b0f2a469daba410
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ae9f107eb9581b9989bfe24a0bdd10b8c433f0c078c5b907c647faa9c6eac22b55b77c7886e74b1d4be39335337e0c43d9c3725ff57e09b3f043c99981186aee
|
7
|
+
data.tar.gz: 2b9a6614017ef7569d28e700e9f970e3c05ed708030b01f73063f3a9e10bfeb2e73bf5b77a927a4c75f75b0d8116ab6d619a040d8fa719f9f8f0cc45b32ce647
|
data/src/streem.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Provides access to the Streem SDK. Start by calling Streem.init() with your API Key ID and Secret
|
4
|
+
class Streem
|
5
|
+
VERSION = "0.1.0"
|
6
|
+
@api_key_id = nil
|
7
|
+
@api_key_secret = nil
|
8
|
+
@api_environment = "prod-us"
|
9
|
+
|
10
|
+
# Define static-like behavior using the metaclass. This allows auto-generation of the accessor methods,
|
11
|
+
# and singleton initialization of the Streem variables.
|
12
|
+
class << self
|
13
|
+
attr_reader :api_key_id, :api_key_secret
|
14
|
+
attr_accessor :api_environment
|
15
|
+
|
16
|
+
def init(api_key_id, api_key_secret)
|
17
|
+
@api_key_id = api_key_id
|
18
|
+
@api_key_secret = api_key_secret
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "base64"
|
4
|
+
require "jose"
|
5
|
+
|
6
|
+
class Streem
|
7
|
+
# Class for building Streem Tokens. Configure the token using the available setter methods, and finalize the token
|
8
|
+
# by calling `builder.token`. This returns a string representation of the token, that can be provided to the client.
|
9
|
+
class TokenBuilder
|
10
|
+
attr_accessor :user_id, :name, :email, :avatar_url, :expiration_ms, :session_ms
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@expiration_ms = 60 * 60 * 1000 # one hour
|
14
|
+
end
|
15
|
+
|
16
|
+
# Build the token using the configured attributes. Validation errors may be raised from this method
|
17
|
+
def token
|
18
|
+
validate_token
|
19
|
+
|
20
|
+
key_as_json = Base64.decode64(Streem.api_key_secret)
|
21
|
+
jwk = JOSE::JWK.from(key_as_json)
|
22
|
+
|
23
|
+
claim = token_claims
|
24
|
+
|
25
|
+
# noinspection RubyStringKeysInHashInspection
|
26
|
+
signed_token = JOSE::JWS.sign(jwk, claim.to_json, { "alg" => "ES256" })
|
27
|
+
signed_token.compact
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def validate_token
|
33
|
+
raise "Must call Streem.init first" if Streem.api_key_id.nil? || Streem.api_key_secret.nil?
|
34
|
+
raise "user_id is required" if @user_id.nil?
|
35
|
+
end
|
36
|
+
|
37
|
+
def token_claims
|
38
|
+
{
|
39
|
+
iss: "streem:api:#{Streem.api_key_id}",
|
40
|
+
sub: @user_id,
|
41
|
+
exp: (Time.now + @expiration_ms).to_i,
|
42
|
+
session_exp: @session_ms.nil? ? nil : (Time.now + @session_ms).to_i,
|
43
|
+
iat: Time.now.to_i,
|
44
|
+
aud: "https://api.#{Streem.api_environment}.streem.cloud/",
|
45
|
+
name: @name,
|
46
|
+
email: @email,
|
47
|
+
picture: @avatar_url
|
48
|
+
}
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: streem
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Streem Dev
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-08-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jose
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.1.3
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.1.3
|
27
|
+
description: Streem library to interact with the Streem API, and generate Embedded
|
28
|
+
SSO tokens
|
29
|
+
email:
|
30
|
+
- dev@streem.pro
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- src/streem.rb
|
36
|
+
- src/streem_token_builder.rb
|
37
|
+
homepage: https://streem.pro
|
38
|
+
licenses: []
|
39
|
+
metadata:
|
40
|
+
homepage_uri: https://streem.pro
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- src
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 2.4.0
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubygems_version: 3.0.6
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: Streem SDK
|
60
|
+
test_files: []
|