lib/opentok/client.rb in opentok-4.4.0 vs lib/opentok/client.rb in opentok-4.5.0

- old
+ new

@@ -552,7 +552,97 @@ end rescue StandardError => e raise OpenTokError, "Failed to connect to OpenTok. Response code: #{e.message}" end + def start_render(session_id, opts) + opts.extend(HashExtensions) + body = { :sessionId => session_id }.merge(opts.camelize_keys!) + response = self.class.post("/v2/project/#{@api_key}/render", { + :body => body.to_json, + :headers => generate_headers("Content-Type" => "application/json") + }) + case response.code + when 202 + response + when 400 + raise OpenTokRenderError, "The render could not be started. The request was invalid." + when 403 + raise OpenTokAuthenticationError, "Authentication failed while starting a render. API Key: #{@api_key}" + when 500 + raise OpenTokError, "OpenTok server error." + else + raise OpenTokRenderError, "The render could not be started" + end + rescue StandardError => e + raise OpenTokError, "Failed to connect to OpenTok. Response code: #{e.message}" + end + + def get_render(render_id) + response = self.class.get("/v2/project/#{@api_key}/render/#{render_id}", { + :headers => generate_headers + }) + case response.code + when 200 + response + when 400 + raise OpenTokRenderError, "The request was invalid." + when 403 + raise OpenTokAuthenticationError, "Authentication failed while getting a render. API Key: #{@api_key}" + when 404 + raise OpenTokRenderError, "No matching render found (with the specified ID)" + when 500 + raise OpenTokError, "OpenTok server error." + else + raise OpenTokRenderError, "Could not fetch render information." + end + rescue StandardError => e + raise OpenTokError, "Failed to connect to OpenTok. Response code: #{e.message}" + end + + def stop_render(render_id) + response = self.class.delete("/v2/project/#{@api_key}/render/#{render_id}", { + :headers => generate_headers + }) + case response.code + when 204 + response + when 400 + raise OpenTokRenderError, "The request was invalid." + when 403 + raise OpenTokAuthenticationError, "Authentication failed while stopping a render. API Key: #{@api_key}" + when 404 + raise OpenTokRenderError, "No matching render found (with the specified ID) or it is already stopped" + when 500 + raise OpenTokError, "OpenTok server error." + else + raise OpenTokRenderError, "The render could not be stopped." + end + rescue StandardError => e + raise OpenTokError, "Failed to connect to OpenTok. Response code: #{e.message}" + end + + def list_renders(offset, count) + query = Hash.new + query[:offset] = offset unless offset.nil? + query[:count] = count unless count.nil? + response = self.class.get("/v2/project/#{@api_key}/render", { + :query => query.empty? ? nil : query, + :headers => generate_headers, + }) + case response.code + when 200 + response + when 403 + raise OpenTokAuthenticationError, + "Authentication failed while retrieving renders. API Key: #{@api_key}" + when 500 + raise OpenTokError, "OpenTok server error." + else + raise OpenTokRenderError, "The renders could not be retrieved." + end + rescue StandardError => e + raise OpenTokError, "Failed to connect to OpenTok. Response code: #{e.message}" + end + end end