Class: Stream::Client
- Inherits:
-
Object
- Object
- Stream::Client
- Includes:
- Activities, Batch
- Defined in:
- lib/stream/client.rb
Direct Known Subclasses
CollectionsClient, PersonalizationClient, ReactionsClient, UsersClient
Instance Attribute Summary collapse
-
#api_key ⇒ Object
readonly
Returns the value of attribute api_key.
-
#api_secret ⇒ Object
readonly
Returns the value of attribute api_secret.
-
#app_id ⇒ Object
readonly
Returns the value of attribute app_id.
-
#client_options ⇒ Object
readonly
Returns the value of attribute client_options.
Instance Method Summary collapse
- #collections ⇒ Object
-
#create_user_session_token(user_id, extra_data = {}) ⇒ string
deprecated
Deprecated.
Use Client#create_user_token instead
-
#create_user_token(user_id, extra_data = {}) ⇒ string
Creates a user token.
-
#feed(feed_slug, user_id) ⇒ Stream::Feed
Creates a feed instance.
- #get_default_params ⇒ Object
- #get_http_client ⇒ Object
-
#initialize(api_key = '', api_secret = '', app_id = nil, opts = {}) ⇒ Client
constructor
initializes a Stream API Client.
- #make_query_params(params) ⇒ Object
- #make_request(method, relative_url, signature, params = {}, data = {}, headers = {}) ⇒ Object
- #og(uri) ⇒ Object
- #personalization ⇒ Object
- #reactions ⇒ Object
- #update_activities(activities) ⇒ Object
- #update_activity(activity) ⇒ Object
- #users ⇒ Object
Methods included from Activities
#activity_partial_update, #batch_activity_partial_update, #get_activities
Methods included from Batch
#add_to_many, #follow_many, #unfollow_many
Constructor Details
#initialize(api_key = '', api_secret = '', app_id = nil, opts = {}) ⇒ Client
initializes a Stream API Client
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/stream/client.rb', line 39 def initialize(api_key = '', api_secret = '', app_id = nil, opts = {}) if api_key.nil? || api_key.empty? env_url = ENV.fetch('STREAM_URL', nil) if env_url =~ Stream::STREAM_URL_COM_RE re = Stream::STREAM_URL_COM_RE elsif env_url =~ Stream::STREAM_URL_IO_RE re = Stream::STREAM_URL_IO_RE end raise ArgumentError, 'empty api_key parameter and missing or invalid STREAM_URL env variable' unless re matches = re.match(ENV.fetch('STREAM_URL', nil)) api_key = matches['key'] api_secret = matches['secret'] app_id = matches['app_id'] opts[:location] = matches['location'] opts[:api_hostname] = matches['api_hostname'] end @api_key = api_key @api_secret = api_secret @app_id = app_id @signer = Stream::Signer.new(api_secret) = { api_key: @api_key, api_version: opts[:api_version] || 'v1.0', location: opts[:location], default_timeout: opts[:default_timeout] || 3, api_hostname: opts[:api_hostname] || 'stream-io-api.com' } end |
Instance Attribute Details
#api_key ⇒ Object (readonly)
Returns the value of attribute api_key.
13 14 15 |
# File 'lib/stream/client.rb', line 13 def api_key @api_key end |
#api_secret ⇒ Object (readonly)
Returns the value of attribute api_secret.
14 15 16 |
# File 'lib/stream/client.rb', line 14 def api_secret @api_secret end |
#app_id ⇒ Object (readonly)
Returns the value of attribute app_id.
15 16 17 |
# File 'lib/stream/client.rb', line 15 def app_id @app_id end |
#client_options ⇒ Object (readonly)
Returns the value of attribute client_options.
16 17 18 |
# File 'lib/stream/client.rb', line 16 def end |
Instance Method Details
#collections ⇒ Object
110 111 112 |
# File 'lib/stream/client.rb', line 110 def collections CollectionsClient.new(api_key, api_secret, app_id, ) end |
#create_user_session_token(user_id, extra_data = {}) ⇒ string
Use Client#create_user_token instead
Creates a user token
91 92 93 |
# File 'lib/stream/client.rb', line 91 def create_user_session_token(user_id, extra_data = {}) create_user_token(user_id, extra_data) end |
#create_user_token(user_id, extra_data = {}) ⇒ string
Creates a user token
102 103 104 |
# File 'lib/stream/client.rb', line 102 def create_user_token(user_id, extra_data = {}) Stream::Signer.create_user_token(user_id, extra_data, api_secret) end |
#feed(feed_slug, user_id) ⇒ Stream::Feed
Creates a feed instance
78 79 80 |
# File 'lib/stream/client.rb', line 78 def feed(feed_slug, user_id) Stream::Feed.new(self, feed_slug, user_id) end |
#get_default_params ⇒ Object
136 137 138 |
# File 'lib/stream/client.rb', line 136 def get_default_params { api_key: @api_key } end |
#get_http_client ⇒ Object
140 141 142 |
# File 'lib/stream/client.rb', line 140 def get_http_client @get_http_client ||= StreamHTTPClient.new(url_generator) end |
#make_query_params(params) ⇒ Object
144 145 146 |
# File 'lib/stream/client.rb', line 144 def make_query_params(params) get_default_params.merge(params).sort_by { |k, _v| k.to_s }.to_h end |
#make_request(method, relative_url, signature, params = {}, data = {}, headers = {}) ⇒ Object
148 149 150 151 152 |
# File 'lib/stream/client.rb', line 148 def make_request(method, relative_url, signature, params = {}, data = {}, headers = {}) headers['Authorization'] = signature headers['stream-auth-type'] = 'jwt' get_http_client.make_http_request(method, relative_url, make_query_params(params), data, headers) end |
#og(uri) ⇒ Object
131 132 133 134 |
# File 'lib/stream/client.rb', line 131 def og(uri) auth_token = Stream::Signer.create_jwt_token('*', '*', @api_secret, '*') make_request(:get, '/og', auth_token, { url: uri }) end |
#personalization ⇒ Object
106 107 108 |
# File 'lib/stream/client.rb', line 106 def personalization PersonalizationClient.new(api_key, api_secret, app_id, ) end |
#reactions ⇒ Object
114 115 116 |
# File 'lib/stream/client.rb', line 114 def reactions ReactionsClient.new(api_key, api_secret, app_id, ) end |
#update_activities(activities) ⇒ Object
126 127 128 129 |
# File 'lib/stream/client.rb', line 126 def update_activities(activities) auth_token = Stream::Signer.create_jwt_token('activities', '*', @api_secret, '*') make_request(:post, '/activities/', auth_token, {}, 'activities' => activities) end |
#update_activity(activity) ⇒ Object
122 123 124 |
# File 'lib/stream/client.rb', line 122 def update_activity(activity) update_activities([activity]) end |
#users ⇒ Object
118 119 120 |
# File 'lib/stream/client.rb', line 118 def users UsersClient.new(api_key, api_secret, app_id, ) end |