##
#    This code was generated by
#    ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
#     |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
#     |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
#
#    Twilio - Video
#    This is the public Twilio REST API.
#
#    NOTE: This class is auto generated by OpenAPI Generator.
#    https://openapi-generator.tech
#    Do not edit the class manually.
#

module Twilio
    module REST
        class Video
            class V1 < Version
                ##
                # Initialize the V1 version of Video
                def initialize(domain)
                    super
                    @version = 'v1'
                    @compositions = nil
                    @composition_hooks = nil
                    @composition_settings = nil
                    @recordings = nil
                    @recording_settings = nil
                    @rooms = nil
                end

                ##
                # @param [String] sid The SID of the Composition resource to fetch.
                # @return [Twilio::REST::Video::V1::CompositionContext] if sid was passed.
                # @return [Twilio::REST::Video::V1::CompositionList]
                def compositions(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @compositions ||= CompositionList.new self
                    else
                        CompositionContext.new(self, sid)
                    end
                end
                ##
                # @param [String] sid The SID of the CompositionHook resource to fetch.
                # @return [Twilio::REST::Video::V1::CompositionHookContext] if sid was passed.
                # @return [Twilio::REST::Video::V1::CompositionHookList]
                def composition_hooks(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @composition_hooks ||= CompositionHookList.new self
                    else
                        CompositionHookContext.new(self, sid)
                    end
                end
                ##
                # @return [Twilio::REST::Video::V1::compositionSettingsContext]
                def composition_settings
                    @composition_settings ||= CompositionSettingsContext.new self
                end
                ##
                # @param [String] sid The SID of the Recording resource to fetch.
                # @return [Twilio::REST::Video::V1::RecordingContext] if sid was passed.
                # @return [Twilio::REST::Video::V1::RecordingList]
                def recordings(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @recordings ||= RecordingList.new self
                    else
                        RecordingContext.new(self, sid)
                    end
                end
                ##
                # @return [Twilio::REST::Video::V1::recordingSettingsContext]
                def recording_settings
                    @recording_settings ||= RecordingSettingsContext.new self
                end
                ##
                # @param [String] sid The SID of the Room resource to fetch.
                # @return [Twilio::REST::Video::V1::RoomContext] if sid was passed.
                # @return [Twilio::REST::Video::V1::RoomList]
                def rooms(sid=:unset)
                    if sid.nil?
                        raise ArgumentError, 'sid cannot be nil'
                    end
                    if sid == :unset
                        @rooms ||= RoomList.new self
                    else
                        RoomContext.new(self, sid)
                    end
                end
                ##
                # Provide a user friendly representation
                def to_s
                    '<Twilio::REST::Video::V1>';
                end
            end
        end
    end
end
