layer-api 0.2.0 → 0.3.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 +4 -4
- data/README.md +13 -0
- data/layer-api.gemspec +1 -0
- data/lib/layer/api.rb +1 -0
- data/lib/layer/api/client.rb +1 -0
- data/lib/layer/api/client/identity_token.rb +61 -0
- data/lib/layer/api/error.rb +1 -2
- data/lib/layer/api/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f73dcb10bde1c4923d430f252668e95dc1ceccd8
|
4
|
+
data.tar.gz: 181d8cae90f4038cb2c3f5ac2a57da7c9654278d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0955b0188b5926dd72b1f2647fdc213f75683cea78ab4ff79fe1fcea7e7e3415a1d1ec78e1fb09262fc86066bf5ba3bb2953c708416df4bca6757c08f8624d0e
|
7
|
+
data.tar.gz: 6a00b6aed1c2ecf85c80563d5bdbf787fc784c51ea461665f6baa724db4a9370d3d008f04ff222a57336f3f887e8522f681f59dde9cd074ce5add97bd77701b0
|
data/README.md
CHANGED
@@ -142,6 +142,19 @@ layer.block_user("owner_id", "user_id")
|
|
142
142
|
layer.unblock_user("owner_id", "user_id")
|
143
143
|
```
|
144
144
|
|
145
|
+
### Generating Identity Tokens
|
146
|
+
See: [the official authentication guide](https://developer.layer.com/docs/android/guides#authentication)
|
147
|
+
|
148
|
+
Make sure the following environment variables are set:
|
149
|
+
`ENV['LAYER_KEY_ID']`
|
150
|
+
`ENV['LAYER_PROVIDER_ID']`
|
151
|
+
`ENV['LAYER_PRIVATE_KEY']`
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
# Returns a valid signed identity token.
|
155
|
+
layer.generate_identity_token(user_id: "1234", nonce: "your_random_nonce")
|
156
|
+
```
|
157
|
+
|
145
158
|
## Development
|
146
159
|
|
147
160
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/layer-api.gemspec
CHANGED
data/lib/layer/api.rb
CHANGED
data/lib/layer/api/client.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
module Layer
|
2
|
+
module Api
|
3
|
+
class IdentityToken
|
4
|
+
attr_reader :user_id, :nonce, :expires_at
|
5
|
+
|
6
|
+
def initialize(options = {})
|
7
|
+
@user_id = options[:user_id]
|
8
|
+
@nonce = options[:nonce]
|
9
|
+
@expires_at = (options[:expires_at] || Time.now+(1209600))
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
get_jwt
|
14
|
+
end
|
15
|
+
|
16
|
+
def layer_key_id
|
17
|
+
ENV['LAYER_KEY_ID']
|
18
|
+
end
|
19
|
+
|
20
|
+
def layer_provider_id
|
21
|
+
ENV['LAYER_PROVIDER_ID']
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def get_jwt
|
27
|
+
JWT.encode(claim, private_key, 'RS256', headers)
|
28
|
+
end
|
29
|
+
|
30
|
+
def headers
|
31
|
+
{
|
32
|
+
typ: 'JWT',
|
33
|
+
cty: 'layer-eit;v=1',
|
34
|
+
kid: layer_key_id
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
def claim
|
39
|
+
{
|
40
|
+
iss: layer_provider_id,
|
41
|
+
prn: user_id.to_s,
|
42
|
+
iat: Time.now.to_i,
|
43
|
+
exp: expires_at.to_i,
|
44
|
+
nce: nonce
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def private_key
|
49
|
+
# Cloud66 stores newlines as \n instead of \\n
|
50
|
+
key = ENV['LAYER_PRIVATE_KEY'].dup
|
51
|
+
OpenSSL::PKey::RSA.new(key.gsub!("\\n","\n"))
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
class Client
|
56
|
+
def generate_identity_token(options = {})
|
57
|
+
IdentityToken.new(options).to_s
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/layer/api/error.rb
CHANGED
data/lib/layer/api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: layer-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jake Kelly
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -126,6 +126,20 @@ dependencies:
|
|
126
126
|
- - "~>"
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: 0.9.1
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: jwt
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - "~>"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: 1.5.1
|
136
|
+
type: :runtime
|
137
|
+
prerelease: false
|
138
|
+
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
requirements:
|
140
|
+
- - "~>"
|
141
|
+
- !ruby/object:Gem::Version
|
142
|
+
version: 1.5.1
|
129
143
|
description: Simple wrapper for the Layer Platform API
|
130
144
|
email:
|
131
145
|
- jake.kelly10@gmail.com
|
@@ -146,6 +160,7 @@ files:
|
|
146
160
|
- lib/layer/api/client.rb
|
147
161
|
- lib/layer/api/client/announcements.rb
|
148
162
|
- lib/layer/api/client/conversations.rb
|
163
|
+
- lib/layer/api/client/identity_token.rb
|
149
164
|
- lib/layer/api/client/users.rb
|
150
165
|
- lib/layer/api/configuration.rb
|
151
166
|
- lib/layer/api/connection.rb
|