stream-ruby 2.11.0 → 3.0.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 +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
|