### Stream Ruby SDK - Getting Started Source: https://github.com/getstream/stream-ruby/blob/main/README.md This section covers the basic steps to get started with the Stream Ruby SDK, including installation, client instantiation, and performing fundamental feed operations. ```APIDOC ## Stream Ruby SDK - Core Operations ### Description This section details how to instantiate the Stream client, interact with feeds, manage activities, and handle follow/unfollow operations using the Ruby SDK. ### Installation ```ruby gem install 'stream-ruby' ``` ### Client Instantiation ```ruby require 'stream' client = Stream::Client.new('YOUR_API_KEY', 'API_KEY_SECRET', 'APP_ID', location: 'us-east') ``` ### Feed Instantiation ```ruby user_feed_1 = client.feed('user', '1') ``` ### Getting Activities ```ruby # Get activities from 5 to 10 (slow pagination) result = user_feed_1.get(limit: 5, offset: 5) # Filter on an id less than the given UUID (Recommended & faster) result = user_feed_1.get(limit: 5, id_lt: 'e561de8f-00f1-11e4-b400-0cc47a024be0') ``` ### Adding Activities ```ruby # Create a new activity activity_data = { actor: 1, verb: 'tweet', object: 1, foreign_id: 'tweet:1' } activity_response = user_feed_1.add_activity(activity_data) # Create a more complex activity activity_data = { actor: 1, verb: 'tweet', object: 1, foreign_id: 'tweet:1', course: { name: 'Golden Gate park', distance: 10 }, participants: %w[Thierry Tommaso], started_at: DateTime.now } activity_response = user_feed_1.add_activity(activity_data) # Add an activity and push it to other feeds too using the `to` field data = {actor_id: '1', verb: 'like', object_id: '3', to: %w[user:44 user:45]} user_feed_1.add_activity(data) ``` ### Updating Activities ```ruby # Update an existing activity (requires both :foreign_id and :time fields) activity_data = { actor: 1, verb: 'tweet', object: 1, foreign_id: 'tweet:1', popularity: 100, time: '2016-05-13T16:12:30' } client.update_activity(activity_data) # Update multiple activities client.update_activities([activity_data]) # Updating parts of an activity set = { 'product.price': 19.99, 'shares': { 'facebook': '...', 'twitter': '...' } } unset = %w[daily_likes popularity] # ...by ID client.activity_partial_update( id: '54a60c1e-4ee3-494b-a1e3-50c06acb5ed4', set: set, unset: unset ) # ...or by combination of foreign ID and time client.activity_partial_update( foreign_id: 'product:123', time: '2016-11-10T13:20:00.000000', set: set, unset: unset ) ``` ### Removing Activities ```ruby # Remove an activity by its id user_feed_1.remove_activity('e561de8f-00f1-11e4-b400-0cc47a024be0') # Remove activities by their foreign_id user_feed_1.remove_activity('tweet:1', foreign_id: true) ``` ### Following/Unfollowing Feeds ```ruby # Follow another feed user_feed_1.follow('flat', '42') # Stop following another feed user_feed_1.unfollow('flat', '42') ``` ### Batch Operations ```ruby # Batch adding activities activities = [ [actor: '1', verb: 'tweet', object: '1'], [actor: '2', verb: 'like', object: '3'] ] user_feed_1.add_activities(activities) # Batch following many feeds (requires ruby 2.1 or later) follows = [ { source: 'flat:1', target: 'user:1' }, { source: 'flat:1', target: 'user:2' }, { source: 'flat:1', target: 'user:3' } ] client.follow_many(follows) ``` ### Generating Tokens ```ruby # Generating tokens for client side usage token = user_feed_1.readonly_token # Javascript client side feed initialization user1 = client.feed('user', '1', '{{ token }}') ``` ### Managing Followers/Following ```ruby # Retrieve first 10 followers of a feed user_feed_1.followers(0, 10) # Retrieve followers from 10 to 20 user_feed_1.followers(10, 10) # Retrieve 10 feeds followed by user_feed_1 user_feed_1.following(10) # Retrieve 10 feeds followed by user_feed_1 starting from the 11th user_feed_1.following(10, 10) # Check if user_feed_1 follows specific feeds user_feed_1.following(0, 2, filter = %w[user:42 user:43]) ``` ``` -------------------------------- ### Install Stream Ruby SDK Source: https://github.com/getstream/stream-ruby/blob/main/README.md Installs the Stream Ruby SDK using the RubyGems package manager. Ensure you have Ruby installed. ```bash gem install 'stream-ruby' ``` -------------------------------- ### Get Activities from a Feed (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Retrieves activities from a feed using pagination. Supports both traditional offset-based pagination and faster ID-based filtering. ```ruby # Get activities from 5 to 10 (slow pagination) result = user_feed_1.get(limit: 5, offset: 5) # (Recommended & faster) Filter on an id less than the given UUID result = user_feed_1.get(limit: 5, id_lt: 'e561de8f-00f1-11e4-b400-0cc47a024be0') ``` -------------------------------- ### Initialize Stream Client and Feed Source: https://github.com/getstream/stream-ruby/blob/main/README.md Demonstrates how to instantiate the Stream client with API keys and app ID, and then create a specific feed object. Replace placeholders with your actual credentials. ```ruby # Instantiate a new client to connect to us east API endpoint require 'stream' client = Stream::Client.new('YOUR_API_KEY', 'API_KEY_SECRET', 'APP_ID', location: 'us-east') # Find your API keys here https://getstream.io/dashboard/ # Instantiate a feed object user_feed_1 = client.feed('user', '1') ``` -------------------------------- ### Retrieve Followers and Following Lists (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Fetches lists of followers for a feed or feeds that a feed is following. Supports pagination to retrieve data in chunks. ```ruby # Retrieve first 10 followers of a feed user_feed_1.followers(0, 10) # Retrieve followers from 10 to 20 user_feed_1.followers(10, 10) # Retrieve 10 feeds followed by user_feed_1 user_feed_1.following(10) # Retrieve 10 feeds followed by user_feed_1 starting from the 11th user_feed_1.following(10, 10) # Check if user_feed_1 follows specific feeds user_feed_1.following(0, 2, filter = %w[user:42 user:43]) ``` -------------------------------- ### Batch Operations (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Performs multiple feed operations efficiently. Supports batch adding activities and batch following/unfollowing multiple feeds. ```ruby # Batch adding activities activities = [ [actor: '1', verb: 'tweet', object: '1'], [actor: '2', verb: 'like', object: '3'] ] user_feed_1.add_activities(activities) # Batch following many feeds (requires ruby 2.1 or later) follows = [ { source: 'flat:1', target: 'user:1' }, { source: 'flat:1', target: 'user:2' }, { source: 'flat:1', target: 'user:3' } ] client.follow_many(follows) ``` -------------------------------- ### Add Activity to Multiple Feeds (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md This snippet demonstrates how to add a single activity to multiple feeds in a single request using the Stream Ruby SDK. It requires a list of feed slugs and an activity object as input. ```ruby feeds = %w[flat:1 flat:2 flat:3 flat:4] activity = { actor: 'User:2', verb: 'pin', object: 'Place:42', target: 'Board:1' } client.add_to_many(activity, feeds) ``` -------------------------------- ### Add Activity to Specific Feeds (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Adds an activity and optionally targets specific other feeds using the `to` field. This allows an activity to be published to multiple recipient feeds simultaneously. ```ruby # Add an activity and push it to other feeds too using the `to` field data = [actor_id: '1', verb: 'like', object_id: '3', to: %w[user:44 user:45]] user_feed_1.add_activity(data) ``` -------------------------------- ### Retrieve Open Graph Information (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md This snippet shows how to use the Stream Ruby SDK to retrieve Open Graph metadata from a given URL. It takes a URL string as input and returns the extracted OG data. ```ruby client.og('https://google.com') ``` -------------------------------- ### Add Activity to Feed (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Adds a single activity to a feed. Supports basic activity structures and more complex ones including custom data fields. ```ruby # Create a new activity activity_data = { actor: 1, verb: 'tweet', object: 1, foreign_id: 'tweet:1' } activity_response = user_feed_1.add_activity(activity_data) # Create a bit more complex activity activity_data = { actor: 1, verb: 'tweet', object: 1, foreign_id: 'tweet:1', course: { name: 'Golden Gate park', distance: 10 }, participants: %w[Thierry Tommaso], started_at: DateTime.now } activity_response = user_feed_1.add_activity(activity_data) ``` -------------------------------- ### Follow and Unfollow Feeds (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Manages the social graph by allowing a feed to follow or stop following another feed. This determines what activities appear in a user's feed. ```ruby # Follow another feed user_feed_1.follow('flat', '42') # Stop following another feed user_feed_1.unfollow('flat', '42') ``` -------------------------------- ### Update and Remove Activities (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Updates existing activities by their foreign ID and time, or removes activities by their ID or foreign ID. Batch updates are also supported. ```ruby # Update an existing activity (requires both :foreign_id and :time fields) activity_data = { actor: 1, verb: 'tweet', object: 1, foreign_id: 'tweet:1', popularity: 100, time: '2016-05-13T16:12:30' } client.update_activity(activity_data) # Update activities client.update_activities([activity_data]) # Remove an activity by its id user_feed_1.remove_activity('e561de8f-00f1-11e4-b400-0cc47a024be0') # Remove activities by their foreign_id user_feed_1.remove_activity('tweet:1', foreign_id: true) ``` -------------------------------- ### Generate Read-Only Token (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Generates a read-only authentication token for a specific feed. This token can be used by client-side applications (e.g., JavaScript) to securely access feed data without exposing API secrets. ```ruby # Generating tokens for client side usage token = user_feed_1.readonly_token # Javascript client side feed initialization user1 = client.feed('user', '1', '{{ token }}') ``` -------------------------------- ### Partial Activity Update (Ruby) Source: https://github.com/getstream/stream-ruby/blob/main/README.md Updates specific fields of an existing activity without replacing the entire activity object. Can be identified by ID or by foreign ID and time. ```ruby # Updating parts of an activity set = { 'product.price': 19.99, 'shares': { 'facebook': '...', 'twitter': '...' } } unset = %w[daily_likes popularity] # ...by ID client.activity_partial_update( id: '54a60c1e-4ee3-494b-a1e3-50c06acb5ed4', set: set, unset: unset ) # ...or by combination of foreign ID and time client.activity_partial_update( foreign_id: 'product:123', time: '2016-11-10T13:20:00.000000', set: set, unset: unset ) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.