Sha256: 4dfb506703d7b39652d6ac85920869fabc702e19170e5b01f52c28fcc2b6169f

Contents?: true

Size: 1.83 KB

Versions: 3

Compression:

Stored size: 1.83 KB

Contents

module Stream
  class CollectionsClient < Client
    def add(collection_name, collection_data, id: nil, user_id: nil)
      data = {
        id: id,
        user_id: user_id,
        data: collection_data,
      }
      uri = "/collections/#{collection_name}/"
      make_collection_request(:post, {}, data, :endpoint => uri)
    end

    def get(collection_name, id)
      uri = "collections/#{collection_name}/#{id}/"
      make_collection_request(:get, {}, {}, :endpoint => uri)
    end

    def update(collection_name, id, data: nil)
      data = {
        data: data
      }
      uri = "collections/#{collection_name}/#{id}/"
      make_collection_request(:put, {}, data, :endpoint => uri)
    end

    def delete(collection_name, id)
      uri = "collections/#{collection_name}/#{id}/"
      make_collection_request(:delete, {}, {}, :endpoint => uri)
    end

    def upsert(collection, objects = [])
      data = {
        data: {
          collection => objects
        }
      }
      make_collection_request(:post, {}, data)
    end

    def select(collection, ids = [])
      params = {
        foreign_ids: ids.map { |id| "#{collection}:#{id}" }.join(',')
      }
      make_collection_request(:get, params, {})
    end

    def delete_many(collection, ids = [])
      params = {
        collection_name: collection,
        ids: ids.join(',')
      }
      make_collection_request(:delete, params, {})
    end

    def create_reference(collection, id)
      _id = id
      if id.respond_to?(:keys) and !id["id"].nil?
        _id = id["id"]
      end
      "SO:#{collection}:#{_id}"
    end

    private

    def make_collection_request(method, params, data, endpoint: '/collections/')
      auth_token = Stream::Signer.create_jwt_token('collections', '*', @api_secret, '*', '*')
      make_request(method, endpoint, auth_token, params, data)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stream-ruby-3.1.0 lib/stream/collections.rb
stream-ruby-3.0.1 lib/stream/collections.rb
stream-ruby-3.0.0 lib/stream/collections.rb