stream-ruby 2.2.5 → 2.3

Sign up to get free protection for your applications and to get access to all the features.
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