-
1
require 'stream/client'
-
1
require 'stream/version'
-
1
require 'stream/signer'
-
-
1
module Stream
-
1
class << self
-
1
def connect(api_key, api_secret)
-
1
Stream::Client.new(api_key, api_secret)
-
end
-
-
1
def clean_feed_id(feed_id)
-
16
feed_id.sub(':', '')
-
end
-
end
-
end
-
1
require 'stream/signer'
-
1
require 'stream/feed'
-
-
1
module Stream
-
1
class Client
-
-
1
def initialize(api_key, api_secret)
-
9
@api_key = api_key
-
9
@api_secret = api_secret
-
9
@signer = Stream::Signer.new(api_secret)
-
end
-
-
1
def feed(feed_id)
-
8
cleaned_feed_id = Stream::clean_feed_id(feed_id)
-
8
signature = @signer.signature(cleaned_feed_id)
-
8
Stream::Feed.new(feed_id, @api_key, signature)
-
end
-
-
end
-
end
-
1
require 'httparty'
-
1
require 'stream/signer'
-
1
require 'stream/exceptions'
-
-
1
module Stream
-
-
1
class StreamHTTPClient
-
-
1
include HTTParty
-
1
base_uri 'https://getstream.io/api'
-
-
1
def make_http_request(method, relative_url, params=nil, data=nil, headers=nil)
-
12
response = self.class.send(method, relative_url, :headers => headers, :query => params, :body => data)
-
12
case response.code
-
when 200..203
-
11
return response
-
when 204...600
-
1
raise StreamApiResponseException, response
-
end
-
end
-
-
end
-
-
1
class Feed
-
1
@@http_client = nil
-
-
1
attr_reader :feed_id
-
-
1
def initialize(feed_id, api_key, signature)
-
8
@feed_id = Stream::clean_feed_id(feed_id)
-
8
@feed_url = feed_id.sub(':', '/')
-
8
@api_key = api_key
-
8
@auth_headers = {'Authorization' => "#{@feed_id} #{signature}"}
-
end
-
-
1
def get_http_client
-
12
if @@http_client.nil?
-
1
@@http_client = StreamHTTPClient.new
-
end
-
12
@@http_client
-
end
-
-
1
def get_default_params
-
12
{:api_key => @api_key}
-
end
-
-
1
def make_request(method, relative_url, params=nil, data=nil)
-
12
params = params.nil? ? {} : params
-
12
data = data.nil? ? {} : data
-
12
default_params = self.get_default_params
-
12
default_params.merge!(params)
-
12
response = self.get_http_client.make_http_request(method, relative_url, default_params, data, @auth_headers)
-
end
-
-
1
def get(params = {})
-
4
uri = "/feed/#{@feed_url}/"
-
4
self.make_request(:get, uri, params)
-
end
-
-
1
def add_activity(activity_data)
-
4
uri = "/feed/#{@feed_url}/"
-
4
self.make_request(:post, uri, nil, activity_data)
-
end
-
-
1
def remove(activity_id)
-
1
uri = "/feed/#{@feed_url}/#{activity_id}/"
-
1
self.make_request(:delete, uri)
-
end
-
-
1
def follow(target_feed_id)
-
2
uri = "/feed/#{@feed_url}/follows/"
-
2
follow_data = {:target => target_feed_id}
-
2
self.make_request(:post, uri, nil, follow_data)
-
end
-
-
1
def unfollow(target_feed_id)
-
1
uri = "/feed/#{@feed_url}/follows/#{target_feed_id}/"
-
1
self.make_request(:delete, uri)
-
end
-
-
end
-
end
-
1
require 'openssl'
-
1
require 'base64'
-
-
1
module Stream
-
1
class Signer
-
1
@key = nil
-
-
1
def initialize(key)
-
10
@key = key.to_s
-
10
@sha1 = OpenSSL::Digest::Digest.new('sha1')
-
end
-
-
1
def urlSafeB64encode(value)
-
9
value.gsub('+', '-').gsub('/', '_').gsub(/^=+/, '').gsub(/=+$/, '')
-
end
-
-
1
def signature(message)
-
9
key = Digest::SHA1.digest @key.to_s
-
9
signature = Base64.strict_encode64(OpenSSL::HMAC.digest(@sha1, key, message.to_s))
-
9
self.urlSafeB64encode(signature)
-
end
-
end
-
end