stream-ruby 2.2.5 → 2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5dcbc7443fc76e9b0b31e82a6651ff5d9abbebea
4
- data.tar.gz: d404852e9f6a1b824cdd732ca47408f654952882
3
+ metadata.gz: 56cc18197a65ac7e4850c3b26d4074ab05a388e0
4
+ data.tar.gz: 79bcf52439076f18713845f218a620b5193acf77
5
5
  SHA512:
6
- metadata.gz: 37e2499bc9049c54d2c85eb3ee1828b6444a37b135aaa616821c87cd734ee1c11a6f8236d049aaac70148e59b3f254bc603966ed845a1fa672f21daca977bc93
7
- data.tar.gz: f9abb7ebb07dc01adf09e1b2cd650282d2ce00c062b7f23c576f3c7dfb9862838092bb5300cc569d338962a44d301d96ad3b199ab992afaa779369f1f1fa3d2c
6
+ metadata.gz: 9db451f0039402f2b4f9bd2cab4d84e37cf826051b89a6b98de0728f1f8966cee48a180305a0ce3768e0ed8ffd23c80effb20e6aa2d3fb685c41a97140c12619
7
+ data.tar.gz: fb99db9538f8a0445aee5fbcc53c5fda9936649644273a87f02aab397276ea78010aeafa84f1cdd1724ffcabbb5ca35df3ca849edb4135ad140a8e8427ce0376
data/README.md CHANGED
@@ -17,7 +17,7 @@ gem install "stream-ruby"
17
17
  ```ruby
18
18
  # Instantiate a new client to connect to us east API endpoint
19
19
  require 'stream'
20
- client = Stream::Client.new('YOUR_API_KEY', 'API_KEY_SECRET', 'APP_ID', :location => 'us-east')
20
+ client = Stream::Client.new('YOUR_API_KEY', 'API_KEY_SECRET', :location => 'us-east')
21
21
  # Find your API keys here https://getstream.io/dashboard/
22
22
 
23
23
  # Instantiate a feed object
@@ -79,10 +79,10 @@ user_feed_1.add_activity(data)
79
79
  user_feed_1.delete
80
80
 
81
81
  # Generating tokens for client side usage
82
- token = user_feed_1.token
82
+ token = user_feed_1.readonly_token
83
83
 
84
84
  # Javascript client side feed initialization
85
- # user1 = client.feed('user', '1', '{{ token }}');
85
+ user1 = client.feed('user', '1', '{{ token }}');
86
86
 
87
87
  # Retrieve first 10 followers of a feed
88
88
  user_feed_1.followers(0, 10)
data/lib/stream/batch.rb CHANGED
@@ -16,8 +16,12 @@ module Stream
16
16
  # ]
17
17
  # @client.follow_many(follows)
18
18
  #
19
- def follow_many(follows)
20
- make_signed_request(:post, "/follow_many/", {}, follows)
19
+ def follow_many(follows, activity_copy_limit=nil)
20
+ query_params = {}
21
+ unless activity_copy_limit.nil?
22
+ query_params['activity_copy_limit'] = activity_copy_limit
23
+ end
24
+ make_signed_request(:post, "/follow_many/", query_params, follows)
21
25
  end
22
26
 
23
27
  #
data/lib/stream/client.rb CHANGED
@@ -82,6 +82,8 @@ module Stream
82
82
 
83
83
  def make_request(method, relative_url, signature, params = {}, data = {}, headers = {})
84
84
  headers["Authorization"] = signature
85
+ headers["stream-auth-type"] = 'jwt'
86
+
85
87
  get_http_client.make_http_request(method, relative_url, make_query_params(params), data, headers)
86
88
  end
87
89
  end
data/lib/stream/feed.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "stream/signer"
2
+ require "jwt"
2
3
 
3
4
  module Stream
4
5
  class Feed
@@ -6,7 +7,6 @@ module Stream
6
7
  attr_reader :slug
7
8
  attr_reader :user_id
8
9
  attr_reader :token
9
- attr_reader :signature
10
10
 
11
11
  def initialize(client, feed_slug, user_id, token)
12
12
  unless valid_feed_slug feed_slug
@@ -21,9 +21,13 @@ module Stream
21
21
  @client = client
22
22
  @user_id = user_id
23
23
  @slug = feed_slug
24
+ @feed_name = "#{feed_slug}#{user_id}"
24
25
  @feed_url = "#{feed_slug}/#{user_id}"
25
26
  @token = token
26
- @signature = "#{feed_slug}#{user_id} #{token}"
27
+ end
28
+
29
+ def readonly_token
30
+ create_jwt_token("*", "read")
27
31
  end
28
32
 
29
33
  def valid_feed_slug(feed_slug)
@@ -42,7 +46,9 @@ module Stream
42
46
  if params[:mark_seen] && params[:mark_seen].is_a?(Array)
43
47
  params[:mark_seen] = params[:mark_seen].join(",")
44
48
  end
45
- @client.make_request(:get, uri, @signature, params)
49
+ auth_token = create_jwt_token("feed", "read")
50
+
51
+ @client.make_request(:get, uri, auth_token, params)
46
52
  end
47
53
 
48
54
  def sign_to_field(to)
@@ -56,7 +62,9 @@ module Stream
56
62
  def add_activity(activity_data)
57
63
  uri = "/feed/#{@feed_url}/"
58
64
  activity_data[:to] &&= sign_to_field(activity_data[:to])
59
- @client.make_request(:post, uri, @signature, {}, activity_data)
65
+ auth_token = create_jwt_token("feed", "write")
66
+
67
+ @client.make_request(:post, uri, auth_token, {}, activity_data)
60
68
  end
61
69
 
62
70
  def add_activities(activities)
@@ -65,7 +73,9 @@ module Stream
65
73
  activity[:to] &&= sign_to_field(activity[:to])
66
74
  end
67
75
  data = { :activities => activities }
68
- @client.make_request(:post, uri, @signature, {}, data)
76
+ auth_token = create_jwt_token("feed", "write")
77
+
78
+ @client.make_request(:post, uri, auth_token, {}, data)
69
79
  end
70
80
 
71
81
  def remove(activity_id, foreign_id = false)
@@ -76,12 +86,16 @@ module Stream
76
86
  uri = "/feed/#{@feed_url}/#{activity_id}/"
77
87
  params = {}
78
88
  params = { "foreign_id" => 1 } if foreign_id
79
- @client.make_request(:delete, uri, @signature, params)
89
+ auth_token = create_jwt_token("feed", "delete")
90
+
91
+ @client.make_request(:delete, uri, auth_token, {}, params)
80
92
  end
81
93
 
82
94
  def delete
83
95
  uri = "/feed/#{@feed_url}/"
84
- @client.make_request(:delete, uri, @signature)
96
+ auth_token = create_jwt_token("feed", "delete")
97
+
98
+ @client.make_request(:delete, uri, auth_token)
85
99
  end
86
100
 
87
101
  def follow(target_feed_slug, target_user_id)
@@ -90,7 +104,9 @@ module Stream
90
104
  :target => "#{target_feed_slug}:#{target_user_id}",
91
105
  :target_token => @client.feed(target_feed_slug, target_user_id).token
92
106
  }
93
- @client.make_request(:post, uri, @signature, {}, follow_data)
107
+ auth_token = create_jwt_token("follower", "write")
108
+
109
+ @client.make_request(:post, uri, auth_token, {}, follow_data)
94
110
  end
95
111
 
96
112
  def followers(offset = 0, limit = 25)
@@ -99,7 +115,9 @@ module Stream
99
115
  "offset" => offset,
100
116
  "limit" => limit
101
117
  }
102
- @client.make_request(:get, uri, @signature, params)
118
+ auth_token = create_jwt_token("follower", "read")
119
+
120
+ @client.make_request(:get, uri, auth_token, {}, params)
103
121
  end
104
122
 
105
123
  def following(offset = 0, limit = 25, filter = [])
@@ -109,12 +127,30 @@ module Stream
109
127
  "limit" => limit,
110
128
  "filter" => filter.join(",")
111
129
  }
112
- @client.make_request(:get, uri, @signature, params)
130
+ auth_token = create_jwt_token("follower", "read")
131
+
132
+ @client.make_request(:get, uri, auth_token, {}, params)
113
133
  end
114
134
 
115
135
  def unfollow(target_feed_slug, target_user_id)
116
136
  uri = "/feed/#{@feed_url}/follows/#{target_feed_slug}:#{target_user_id}/"
117
- @client.make_request(:delete, uri, @signature)
137
+ auth_token = create_jwt_token("follower", "delete")
138
+
139
+ @client.make_request(:delete, uri, auth_token, {auth_token: auth_token})
140
+ end
141
+
142
+ private
143
+
144
+ def create_jwt_token(resource, action, feed_id=nil, user_id=nil)
145
+ payload = {
146
+ "resource" => resource,
147
+ "action" => action,
148
+ "feed_id" => @feed_name
149
+ }
150
+ payload["feed_id"] = feed_id if feed_id
151
+ payload["user_id"] = user_id if user_id
152
+
153
+ return JWT.encode(payload, @client.api_secret, 'HS256')
118
154
  end
119
155
  end
120
156
  end
@@ -1,3 +1,3 @@
1
1
  module Stream
2
- VERSION = "2.2.5"
2
+ VERSION = "2.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stream-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.5
4
+ version: '2.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tommaso Barbugli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-23 00:00:00.000000000 Z
11
+ date: 2016-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: jwt
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.5.2
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.5.2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement