stream-ruby 2.11.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -7
- data/lib/stream/batch.rb +7 -4
- data/lib/stream/client.rb +40 -14
- data/lib/stream/collections.rb +36 -9
- data/lib/stream/feed.rb +40 -18
- data/lib/stream/reactions.rb +84 -0
- data/lib/stream/signer.rb +1 -16
- data/lib/stream/users.rb +47 -0
- data/lib/stream/version.rb +1 -1
- metadata +4 -17
- data/lib/stream/signedrequest.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a849b72e60913e35cf4421a4fa2a0b21868e4c6
|
4
|
+
data.tar.gz: 2e4c8ede31bfdc3c52399314e85ec91b9bb56d0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d0888b3107241fb182bc974aed6ee4ac3a3592d45af7d0c19c6704b703f31c157364398b1297302b2ebdd212694f8e96f428e98122c2ab2d5b494e2c25d901b
|
7
|
+
data.tar.gz: ce762dc8de16554e74476bf57b5722127c40ab665e58b27ad711f3f3e453f423ed2b81c17008f8b746558edf36052ab48cc7e5ccd88a915d3561b4b7d395f705
|
data/README.md
CHANGED
@@ -11,12 +11,11 @@ You can sign up for a Stream account at https://getstream.io/get_started.
|
|
11
11
|
|
12
12
|
#### Ruby version requirements and support
|
13
13
|
|
14
|
-
This API Client project requires Ruby 2.2.
|
15
|
-
- 2.2.
|
16
|
-
- 2.3.
|
17
|
-
- 2.
|
18
|
-
- 2.
|
19
|
-
- 2.5.1
|
14
|
+
This API Client project requires Ruby 2.2.10 at a minimum. We will support the following versions:
|
15
|
+
- 2.2.10
|
16
|
+
- 2.3.8
|
17
|
+
- 2.4.5
|
18
|
+
- 2.5.3
|
20
19
|
|
21
20
|
See the [Travis configuration](.travis.yml) for details of how it is built and tested.
|
22
21
|
|
@@ -156,6 +155,6 @@ client.add_to_many(activity, feeds)
|
|
156
155
|
|
157
156
|
### Copyright and License Information
|
158
157
|
|
159
|
-
Copyright (c) 2014-
|
158
|
+
Copyright (c) 2014-2018 Stream.io Inc, and individual contributors. All rights reserved.
|
160
159
|
|
161
160
|
See the file "LICENSE" for information on the history of this software, terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES.
|
data/lib/stream/batch.rb
CHANGED
@@ -21,7 +21,8 @@ module Stream
|
|
21
21
|
unless activity_copy_limit.nil?
|
22
22
|
query_params['activity_copy_limit'] = activity_copy_limit
|
23
23
|
end
|
24
|
-
|
24
|
+
signature = Stream::Signer.create_jwt_token('follower', '*', @api_secret, '*')
|
25
|
+
make_request(:post, '/follow_many/', signature, query_params, follows)
|
25
26
|
end
|
26
27
|
|
27
28
|
#
|
@@ -41,9 +42,10 @@ module Stream
|
|
41
42
|
# @client.unfollow_many(unfollows)
|
42
43
|
#
|
43
44
|
def unfollow_many(unfollows)
|
44
|
-
|
45
|
+
signature = Stream::Signer.create_jwt_token('follower', '*', @api_secret, '*')
|
46
|
+
make_request(:post, '/unfollow_many/', signature, {}, unfollows)
|
45
47
|
end
|
46
|
-
|
48
|
+
|
47
49
|
#
|
48
50
|
# Adds an activity to many feeds in one single request
|
49
51
|
#
|
@@ -57,7 +59,8 @@ module Stream
|
|
57
59
|
:feeds => feeds,
|
58
60
|
:activity => activity_data
|
59
61
|
}
|
60
|
-
|
62
|
+
signature = Stream::Signer.create_jwt_token('feed', '*', @api_secret, '*')
|
63
|
+
make_request(:post, '/feed/add_to_many/', signature, {}, data)
|
61
64
|
end
|
62
65
|
end
|
63
66
|
end
|
data/lib/stream/client.rb
CHANGED
@@ -14,17 +14,15 @@ module Stream
|
|
14
14
|
attr_reader :app_id
|
15
15
|
attr_reader :client_options
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
require 'stream/batch'
|
18
|
+
require 'stream/personalization'
|
19
|
+
require 'stream/collections'
|
20
|
+
require 'stream/activities'
|
21
|
+
require 'stream/reactions'
|
22
|
+
require 'stream/users'
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
include Stream::Activities
|
27
|
-
end
|
24
|
+
include Stream::Batch
|
25
|
+
include Stream::Activities
|
28
26
|
|
29
27
|
#
|
30
28
|
# initializes a Stream API Client
|
@@ -38,6 +36,7 @@ module Stream
|
|
38
36
|
# Stream::Client.new('my_key', 'my_secret', 'my_app_id', :location => 'us-east')
|
39
37
|
#
|
40
38
|
def initialize(api_key = '', api_secret = '', app_id = nil, opts = {})
|
39
|
+
|
41
40
|
if api_key.nil? || api_key.empty?
|
42
41
|
env_url = ENV['STREAM_URL']
|
43
42
|
if env_url =~ Stream::STREAM_URL_COM_RE
|
@@ -46,7 +45,7 @@ module Stream
|
|
46
45
|
re = Stream::STREAM_URL_IO_RE
|
47
46
|
end
|
48
47
|
raise ArgumentError, 'empty api_key parameter and missing or invalid STREAM_URL env variable' unless re
|
49
|
-
|
48
|
+
|
50
49
|
matches = re.match(ENV['STREAM_URL'])
|
51
50
|
api_key = matches['key']
|
52
51
|
api_secret = matches['secret']
|
@@ -77,12 +76,31 @@ module Stream
|
|
77
76
|
# @return [Stream::Feed]
|
78
77
|
#
|
79
78
|
def feed(feed_slug, user_id)
|
80
|
-
|
81
|
-
Stream::Feed.new(self, feed_slug, user_id, token)
|
79
|
+
Stream::Feed.new(self, feed_slug, user_id)
|
82
80
|
end
|
83
81
|
|
82
|
+
# Creates a user token
|
83
|
+
#
|
84
|
+
# @deprecated Use Client#create_user_token instead
|
85
|
+
#
|
86
|
+
# @param [string] user_id the user_if of this token (e.g. User42)
|
87
|
+
# @param [hash] extra_data additional token data
|
88
|
+
#
|
89
|
+
# @return [string]
|
90
|
+
#
|
84
91
|
def create_user_session_token(user_id, extra_data = {})
|
85
|
-
|
92
|
+
create_user_token(user_id, extra_data)
|
93
|
+
end
|
94
|
+
|
95
|
+
# Creates a user token
|
96
|
+
#
|
97
|
+
# @param [string] user_id the user_if of this token (e.g. User42)
|
98
|
+
# @param [hash] extra_data additional token data
|
99
|
+
#
|
100
|
+
# @return [string]
|
101
|
+
#
|
102
|
+
def create_user_token(user_id, extra_data = {})
|
103
|
+
return Stream::Signer.create_user_token(user_id, extra_data, api_secret)
|
86
104
|
end
|
87
105
|
|
88
106
|
def personalization
|
@@ -93,6 +111,14 @@ module Stream
|
|
93
111
|
CollectionsClient.new(api_key, api_secret, app_id, client_options)
|
94
112
|
end
|
95
113
|
|
114
|
+
def reactions
|
115
|
+
ReactionsClient.new(api_key, api_secret, app_id, client_options)
|
116
|
+
end
|
117
|
+
|
118
|
+
def users
|
119
|
+
UsersClient.new(api_key, api_secret, app_id, client_options)
|
120
|
+
end
|
121
|
+
|
96
122
|
def update_activity(activity)
|
97
123
|
update_activities([activity])
|
98
124
|
end
|
data/lib/stream/collections.rb
CHANGED
@@ -1,5 +1,33 @@
|
|
1
1
|
module Stream
|
2
2
|
class CollectionsClient < Client
|
3
|
+
def add(collection_name, collection_data, id: nil, user_id: nil)
|
4
|
+
data = {
|
5
|
+
id: id,
|
6
|
+
user_id: user_id,
|
7
|
+
data: collection_data,
|
8
|
+
}
|
9
|
+
uri = "/collections/#{collection_name}/"
|
10
|
+
make_collection_request(:post, {}, data, :endpoint => uri)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(collection_name, id)
|
14
|
+
uri = "collections/#{collection_name}/#{id}/"
|
15
|
+
make_collection_request(:get, {}, {}, :endpoint => uri)
|
16
|
+
end
|
17
|
+
|
18
|
+
def update(collection_name, id, data: nil)
|
19
|
+
data = {
|
20
|
+
data: data
|
21
|
+
}
|
22
|
+
uri = "collections/#{collection_name}/#{id}/"
|
23
|
+
make_collection_request(:put, {}, data, :endpoint => uri)
|
24
|
+
end
|
25
|
+
|
26
|
+
def delete(collection_name, id)
|
27
|
+
uri = "collections/#{collection_name}/#{id}/"
|
28
|
+
make_collection_request(:delete, {}, {}, :endpoint => uri)
|
29
|
+
end
|
30
|
+
|
3
31
|
def upsert(collection, objects = [])
|
4
32
|
data = {
|
5
33
|
data: {
|
@@ -9,14 +37,14 @@ module Stream
|
|
9
37
|
make_collection_request(:post, {}, data)
|
10
38
|
end
|
11
39
|
|
12
|
-
def
|
40
|
+
def select(collection, ids = [])
|
13
41
|
params = {
|
14
42
|
foreign_ids: ids.map { |id| "#{collection}:#{id}" }.join(',')
|
15
43
|
}
|
16
44
|
make_collection_request(:get, params, {})
|
17
45
|
end
|
18
46
|
|
19
|
-
def
|
47
|
+
def delete_many(collection, ids = [])
|
20
48
|
params = {
|
21
49
|
collection_name: collection,
|
22
50
|
ids: ids.join(',')
|
@@ -25,17 +53,16 @@ module Stream
|
|
25
53
|
end
|
26
54
|
|
27
55
|
def create_reference(collection, id)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
56
|
+
_id = id
|
57
|
+
if id.respond_to?(:keys) and !id["id"].nil?
|
58
|
+
_id = id["id"]
|
59
|
+
end
|
60
|
+
"SO:#{collection}:#{_id}"
|
33
61
|
end
|
34
62
|
|
35
63
|
private
|
36
64
|
|
37
|
-
def make_collection_request(method, params, data)
|
38
|
-
endpoint = '/meta/'
|
65
|
+
def make_collection_request(method, params, data, endpoint: '/collections/')
|
39
66
|
auth_token = Stream::Signer.create_jwt_token('collections', '*', @api_secret, '*', '*')
|
40
67
|
make_request(method, endpoint, auth_token, params, data)
|
41
68
|
end
|
data/lib/stream/feed.rb
CHANGED
@@ -6,9 +6,8 @@ module Stream
|
|
6
6
|
attr_reader :id
|
7
7
|
attr_reader :slug
|
8
8
|
attr_reader :user_id
|
9
|
-
attr_reader :token
|
10
9
|
|
11
|
-
def initialize(client, feed_slug, user_id
|
10
|
+
def initialize(client, feed_slug, user_id)
|
12
11
|
unless valid_feed_slug feed_slug
|
13
12
|
raise StreamInputData, 'feed_slug can only contain alphanumeric characters plus underscores'
|
14
13
|
end
|
@@ -23,7 +22,6 @@ module Stream
|
|
23
22
|
@slug = feed_slug
|
24
23
|
@feed_name = "#{feed_slug}#{user_id}"
|
25
24
|
@feed_url = "#{feed_slug}/#{user_id}"
|
26
|
-
@token = token
|
27
25
|
end
|
28
26
|
|
29
27
|
def readonly_token
|
@@ -39,30 +37,37 @@ module Stream
|
|
39
37
|
end
|
40
38
|
|
41
39
|
def get(params = {})
|
42
|
-
|
40
|
+
if params[:enrich] or params[:reactions]
|
41
|
+
uri = "/enrich/feed/#{@feed_url}/"
|
42
|
+
else
|
43
|
+
uri = "/feed/#{@feed_url}/"
|
44
|
+
end
|
43
45
|
if params[:mark_read] && params[:mark_read].is_a?(Array)
|
44
46
|
params[:mark_read] = params[:mark_read].join(',')
|
45
47
|
end
|
46
48
|
if params[:mark_seen] && params[:mark_seen].is_a?(Array)
|
47
49
|
params[:mark_seen] = params[:mark_seen].join(',')
|
48
50
|
end
|
49
|
-
|
51
|
+
if params[:reactions].respond_to?(:keys)
|
52
|
+
if params[:reactions][:own]
|
53
|
+
params[:withOwnReactions] = true
|
54
|
+
end
|
55
|
+
if params[:reactions][:recent]
|
56
|
+
params[:withRecentReactions] = true
|
57
|
+
end
|
58
|
+
if params[:reactions][:counts]
|
59
|
+
params[:withReactionCounts] = true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
[:enrich, :reactions].each { |k| params.delete(k) }
|
50
63
|
|
64
|
+
auth_token = create_jwt_token('feed', 'read')
|
51
65
|
@client.make_request(:get, uri, auth_token, params)
|
52
66
|
end
|
53
67
|
|
54
|
-
def sign_to_field(to)
|
55
|
-
to.map do |feed_id|
|
56
|
-
feed_slug, user_id = feed_id.split(':')
|
57
|
-
feed = @client.feed(feed_slug, user_id)
|
58
|
-
"#{feed.id} #{feed.token}"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
68
|
def add_activity(activity_data)
|
63
69
|
uri = "/feed/#{@feed_url}/"
|
64
70
|
data = activity_data.clone
|
65
|
-
data[:to] &&= sign_to_field(data[:to])
|
66
71
|
auth_token = create_jwt_token('feed', 'write')
|
67
72
|
|
68
73
|
@client.make_request(:post, uri, auth_token, {}, data)
|
@@ -70,9 +75,6 @@ module Stream
|
|
70
75
|
|
71
76
|
def add_activities(activities)
|
72
77
|
uri = "/feed/#{@feed_url}/"
|
73
|
-
activities.each do |activity|
|
74
|
-
activity[:to] &&= sign_to_field(activity[:to])
|
75
|
-
end
|
76
78
|
data = {:activities => activities}
|
77
79
|
auth_token = create_jwt_token('feed', 'write')
|
78
80
|
|
@@ -102,6 +104,27 @@ module Stream
|
|
102
104
|
@client.make_request(:post, '/activities/', auth_token, {}, 'activities' => activities)
|
103
105
|
end
|
104
106
|
|
107
|
+
def update_activity_to_targets(foreign_id, time, new_targets: nil, added_targets: nil, removed_targets: nil)
|
108
|
+
uri = "/feed_targets/#{@feed_url}/activity_to_targets/"
|
109
|
+
data = {
|
110
|
+
'foreign_id': foreign_id,
|
111
|
+
'time': time
|
112
|
+
}
|
113
|
+
|
114
|
+
if !new_targets.nil?
|
115
|
+
data['new_targets'] = new_targets
|
116
|
+
end
|
117
|
+
if !added_targets.nil?
|
118
|
+
data['added_targets'] = added_targets
|
119
|
+
end
|
120
|
+
if !removed_targets.nil?
|
121
|
+
data['removed_targets'] = removed_targets
|
122
|
+
end
|
123
|
+
auth_token = create_jwt_token('feed_targets', 'write')
|
124
|
+
|
125
|
+
@client.make_request(:post, uri, auth_token, {}, data)
|
126
|
+
end
|
127
|
+
|
105
128
|
def follow(target_feed_slug, target_user_id, activity_copy_limit = 300)
|
106
129
|
uri = "/feed/#{@feed_url}/follows/"
|
107
130
|
activity_copy_limit = 0 if activity_copy_limit < 0
|
@@ -109,7 +132,6 @@ module Stream
|
|
109
132
|
|
110
133
|
follow_data = {
|
111
134
|
target: "#{target_feed_slug}:#{target_user_id}",
|
112
|
-
target_token: @client.feed(target_feed_slug, target_user_id).token,
|
113
135
|
activity_copy_limit: activity_copy_limit
|
114
136
|
}
|
115
137
|
auth_token = create_jwt_token('follower', 'write')
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Stream
|
2
|
+
class ReactionsClient < Client
|
3
|
+
def add(kind, activity_id, user_id, data: nil, target_feeds: nil)
|
4
|
+
data = {
|
5
|
+
kind: kind,
|
6
|
+
activity_id: activity_id,
|
7
|
+
user_id: user_id,
|
8
|
+
data: data,
|
9
|
+
target_feeds: target_feeds
|
10
|
+
}
|
11
|
+
make_reaction_request(:post, {}, data)
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(reaction_id)
|
15
|
+
uri = "/reaction/#{reaction_id}/"
|
16
|
+
make_reaction_request(:get, {}, {}, :endpoint => uri)
|
17
|
+
end
|
18
|
+
|
19
|
+
def update(reaction_id, data: nil, target_feeds: nil)
|
20
|
+
data = {
|
21
|
+
data: data,
|
22
|
+
target_feeds: target_feeds
|
23
|
+
}
|
24
|
+
uri = "/reaction/#{reaction_id}/"
|
25
|
+
make_reaction_request(:put, {}, data, :endpoint => uri)
|
26
|
+
end
|
27
|
+
|
28
|
+
def delete(reaction_id)
|
29
|
+
uri = "/reaction/#{reaction_id}/"
|
30
|
+
make_reaction_request(:delete, {}, data, :endpoint => uri)
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_child(kind, parent_id, user_id, data: nil, target_feeds: nil)
|
34
|
+
data = {
|
35
|
+
kind: kind,
|
36
|
+
parent: parent_id,
|
37
|
+
user_id: user_id,
|
38
|
+
data: data,
|
39
|
+
target_feeds: target_feeds
|
40
|
+
}
|
41
|
+
make_reaction_request(:post, {}, data)
|
42
|
+
end
|
43
|
+
|
44
|
+
def filter(params = {})
|
45
|
+
lookup_field = ""
|
46
|
+
lookup_value = ""
|
47
|
+
kind = params.fetch(:kind, "")
|
48
|
+
if params[:reaction_id]
|
49
|
+
lookup_field = "reaction_id"
|
50
|
+
lookup_value = params[:reaction_id]
|
51
|
+
elsif params[:activity_id]
|
52
|
+
lookup_field = "activity_id"
|
53
|
+
lookup_value = params[:activity_id]
|
54
|
+
elsif params[:user_id]
|
55
|
+
lookup_field = "user_id"
|
56
|
+
lookup_value = params[:user_id]
|
57
|
+
end
|
58
|
+
unless lookup_field.empty?
|
59
|
+
params.delete(lookup_field.to_sym)
|
60
|
+
end
|
61
|
+
if kind.nil? || kind.empty?
|
62
|
+
uri = "/reaction/#{lookup_field}/#{lookup_value}/"
|
63
|
+
else
|
64
|
+
uri = "/reaction/#{lookup_field}/#{lookup_value}/#{kind}/"
|
65
|
+
end
|
66
|
+
make_reaction_request(:get, params, {}, :endpoint => uri)
|
67
|
+
end
|
68
|
+
|
69
|
+
def create_reference(id)
|
70
|
+
_id = id
|
71
|
+
if id.respond_to?(:keys) and !id["id"].nil?
|
72
|
+
_id = id["id"]
|
73
|
+
end
|
74
|
+
"SR:#{_id}"
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def make_reaction_request(method, params, data, endpoint: '/reaction/')
|
80
|
+
auth_token = Stream::Signer.create_jwt_token('reactions', '*', @api_secret, '*', '*')
|
81
|
+
make_request(method, endpoint, auth_token, params, data)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
data/lib/stream/signer.rb
CHANGED
@@ -7,24 +7,9 @@ module Stream
|
|
7
7
|
|
8
8
|
def initialize(key)
|
9
9
|
@key = key.to_s
|
10
|
-
@sha1 = OpenSSL::Digest.new('sha1')
|
11
10
|
end
|
12
11
|
|
13
|
-
def
|
14
|
-
value.tr('+', '-').tr('/', '_').gsub(/^=+/, '').gsub(/=+$/, '')
|
15
|
-
end
|
16
|
-
|
17
|
-
def sign_message(message)
|
18
|
-
key = Digest::SHA1.digest @key.to_s
|
19
|
-
token = Base64.strict_encode64(OpenSSL::HMAC.digest(@sha1, key, message))
|
20
|
-
urlsafe_encodeb64(token)
|
21
|
-
end
|
22
|
-
|
23
|
-
def sign(feed_slug, user_id)
|
24
|
-
sign_message("#{feed_slug}#{user_id}")
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.create_user_session_token(user_id, payload = {}, api_secret)
|
12
|
+
def self.create_user_token(user_id, payload = {}, api_secret)
|
28
13
|
payload['user_id'] = user_id
|
29
14
|
return JWT.encode(payload, api_secret, 'HS256')
|
30
15
|
end
|
data/lib/stream/users.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
module Stream
|
2
|
+
class UsersClient < Client
|
3
|
+
def add(user_id, data: nil, get_or_create: false)
|
4
|
+
data = {
|
5
|
+
id: user_id,
|
6
|
+
data: data
|
7
|
+
}
|
8
|
+
params = {
|
9
|
+
get_or_create: get_or_create
|
10
|
+
}
|
11
|
+
make_user_request(:post, params, data)
|
12
|
+
end
|
13
|
+
|
14
|
+
def get(user_id)
|
15
|
+
uri = "/user/#{user_id}/"
|
16
|
+
make_user_request(:get, {}, {}, :endpoint => uri)
|
17
|
+
end
|
18
|
+
|
19
|
+
def update(user_id, data: nil)
|
20
|
+
data = {
|
21
|
+
data: data
|
22
|
+
}
|
23
|
+
uri = "/user/#{user_id}/"
|
24
|
+
make_user_request(:put, {}, data, :endpoint => uri)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete(user_id)
|
28
|
+
uri = "/user/#{user_id}/"
|
29
|
+
make_user_request(:delete, {}, {}, :endpoint => uri)
|
30
|
+
end
|
31
|
+
|
32
|
+
def create_reference(id)
|
33
|
+
_id = id
|
34
|
+
if id.respond_to?(:keys) and !id["id"].nil?
|
35
|
+
_id = id["id"]
|
36
|
+
end
|
37
|
+
"SU:#{_id}"
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def make_user_request(method, params, data, endpoint: '/user/')
|
43
|
+
auth_token = Stream::Signer.create_jwt_token('users', '*', @api_secret, '*', '*')
|
44
|
+
make_request(method, endpoint, auth_token, params, data)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/stream/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stream-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tommaso Barbugli
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-12-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: faraday
|
@@ -32,20 +32,6 @@ dependencies:
|
|
32
32
|
- - "<"
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '1.0'
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: http_signatures
|
37
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - "~>"
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
42
|
-
type: :runtime
|
43
|
-
prerelease: false
|
44
|
-
version_requirements: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - "~>"
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
35
|
- !ruby/object:Gem::Dependency
|
50
36
|
name: jwt
|
51
37
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,9 +114,10 @@ files:
|
|
128
114
|
- lib/stream/exceptions.rb
|
129
115
|
- lib/stream/feed.rb
|
130
116
|
- lib/stream/personalization.rb
|
131
|
-
- lib/stream/
|
117
|
+
- lib/stream/reactions.rb
|
132
118
|
- lib/stream/signer.rb
|
133
119
|
- lib/stream/url.rb
|
120
|
+
- lib/stream/users.rb
|
134
121
|
- lib/stream/version.rb
|
135
122
|
homepage: http://github.com/GetStream/stream-ruby
|
136
123
|
licenses:
|
data/lib/stream/signedrequest.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'http_signatures'
|
2
|
-
require 'net/http'
|
3
|
-
require 'time'
|
4
|
-
|
5
|
-
module Stream
|
6
|
-
module SignedRequest
|
7
|
-
module ClassMethods
|
8
|
-
def supports_signed_requests;
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def self.included(klass)
|
13
|
-
klass.extend ClassMethods
|
14
|
-
end
|
15
|
-
|
16
|
-
def make_signed_request(method, relative_url, params = {}, data = {})
|
17
|
-
query_params = make_query_params(params)
|
18
|
-
context = HttpSignatures::Context.new(
|
19
|
-
keys: {@api_key => @api_secret},
|
20
|
-
algorithm: 'hmac-sha256',
|
21
|
-
headers: %w(date)
|
22
|
-
)
|
23
|
-
method_map = {
|
24
|
-
:get => Net::HTTP::Get,
|
25
|
-
:delete => Net::HTTP::Delete,
|
26
|
-
:put => Net::HTTP::Put,
|
27
|
-
:post => Net::HTTP::Post
|
28
|
-
}
|
29
|
-
request_date = Time.now.rfc822
|
30
|
-
message = method_map[method].new(
|
31
|
-
"#{get_http_client.base_path}#{relative_url}?#{URI.encode_www_form(query_params)}",
|
32
|
-
'date' => request_date
|
33
|
-
)
|
34
|
-
context.signer.sign(message)
|
35
|
-
headers = {
|
36
|
-
Authorization: message['Signature'],
|
37
|
-
Date: request_date,
|
38
|
-
'X-Api-Key' => api_key
|
39
|
-
}
|
40
|
-
get_http_client.make_http_request(method, relative_url, query_params, data, headers)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|