Class: OpenTok::Archives

Inherits:
Object
  • Object
show all
Defined in:
lib/opentok/archives.rb

Overview

A class for working with OpenTok archives.

Instance Method Summary (collapse)

Instance Method Details

- (ArchiveList) all(options = {})

Returns an ArchiveList, which is an array of archives that are completed and in-progress, for your API key.

Parameters:

  • options (Hash) (defaults to: {})

    A hash with keys defining which range of archives to retrieve.

Options Hash (options):

  • :offset (integer)

    Optional. The index offset of the first archive. 0 is offset of the most recently started archive. 1 is the offset of the archive that started prior to the most recent archive. If you do not specify an offset, 0 is used.

  • :count (integer)

    Optional. The number of archives to be returned. The maximum number of archives returned is 1000.

Returns:

  • (ArchiveList)

    An ArchiveList object, which is an array of Archive objects.

Raises:

  • (ArgumentError)


101
102
103
104
105
# File 'lib/opentok/archives.rb', line 101

def all(options = {})
  raise ArgumentError, "Limit is invalid" unless options[:count].nil? or (0..100).include? options[:count]
  archive_list_json = @client.list_archives(options[:offset], options[:count])
  ArchiveList.new self, archive_list_json
end

- (Archive) create(session_id, options = {})

Starts archiving an OpenTok session.

Clients must be actively connected to the OpenTok session for you to successfully start recording an archive.

You can only record one archive at a time for a given session. You can only record archives of sessions that use the OpenTok Media Router (sessions with the media mode set to routed); you cannot archive sessions with the media mode set to relayed.

For more information on archiving, see the OpenTok archiving programming guide.

:name.

Parameters:

  • session_id (String)

    The session ID of the OpenTok session to archive.

  • options (Hash) (defaults to: {})

    A hash with the key ‘name’, ‘has_audio’, and ‘has_video’ (or

Options Hash (options):

  • :name (String)

    This is the name of the archive. You can use this name to identify the archive. It is a property of the Archive object, and it is a property of archive-related events in the OpenTok client SDKs.

  • :has_audio (true, false)

    Whether the archive will include an audio track (true) or not false). The default value is true (an audio track is included). If you set both has_audio and has_video to false, the call to the create() method results in an error.

  • :has_video (true, false)

    Whether the archive will include a video track (true) or not false). The default value is true (a video track is included). If you set both has_audio and has_video to false, the call to the create() method results in an error.

  • :output_mode (String)

    Whether all streams in the archive are recorded to a single file (:composed, the default) or to individual files (:individual). For more information on archiving and the archive file formats, see the OpenTok archiving programming guide.

Returns:

  • (Archive)

    The Archive object, which includes properties defining the archive, including the archive ID.

Raises:

  • (OpenTokArchiveError)

    The archive could not be started. The request was invalid or the session has no connected clients.

  • (OpenTokAuthenticationError)

    Authentication failed while starting an archive. Invalid API key.

  • (OpenTokArchiveError)

    The archive could not be started. The session ID does not exist.

  • (OpenTokArchiveError)

    The archive could not be started. The session could be peer-to-peer or the session is already being recorded.

  • (OpenTokArchiveError)

    The archive could not be started.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/opentok/archives.rb', line 59

def create(session_id, options = {})
  raise ArgumentError, "session_id not provided" if session_id.to_s.empty?

  # normalize opts so all keys are symbols and only include valid_opts
  valid_opts = [ :name, :has_audio, :has_video, :output_mode ]
  opts = options.inject({}) do |m,(k,v)|
    if valid_opts.include? k.to_sym
      m[k.to_sym] = v
    end
    m
  end

  archive_json = @client.start_archive(session_id, opts)
  Archive.new self, archive_json
end

- (Object) delete_by_id(archive_id)

Deletes an OpenTok archive.

You can only delete an archive which has a status of "available", "uploaded", or "deleted". Deleting an archive removes its record from the list of archives. For an "available" archive, it also removes the archive file, making it unavailable for download. For a "deleted" archive, the archive remains deleted.

Parameters:

  • archive_id (String)

    The archive ID of the archive you want to delete.

Raises:



141
142
143
144
145
# File 'lib/opentok/archives.rb', line 141

def delete_by_id(archive_id)
  raise ArgumentError, "archive_id not provided" if archive_id.to_s.empty?
  response = @client.delete_archive(archive_id)
  (200..300).include? response.code
end

- (Archive) find(archive_id)

Gets an Archive object for the given archive ID.

Parameters:

  • archive_id (String)

    The archive ID.

Returns:

  • (Archive)

    The Archive object.

Raises:



84
85
86
87
88
# File 'lib/opentok/archives.rb', line 84

def find(archive_id)
  raise ArgumentError, "archive_id not provided" if archive_id.to_s.empty?
  archive_json = @client.get_archive(archive_id.to_s)
  Archive.new self, archive_json
end

- (Archive) stop_by_id(archive_id)

Stops an OpenTok archive that is being recorded.

Archives automatically stop recording after 90 minutes or when all clients have disconnected from the session being archived.

Parameters:

  • archive_id (String)

    The archive ID of the archive you want to stop recording.

Returns:

  • (Archive)

    The Archive object corresponding to the archive being stopped.

Raises:



122
123
124
125
126
# File 'lib/opentok/archives.rb', line 122

def stop_by_id(archive_id)
  raise ArgumentError, "archive_id not provided" if archive_id.to_s.empty?
  archive_json = @client.stop_archive(archive_id)
  Archive.new self, archive_json
end