# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.YouTube.V3.Model.VideoSuggestions do
  @moduledoc """
  Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions.

  ## Attributes

  *   `editorSuggestions` (*type:* `list(String.t)`, *default:* `nil`) - A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
  *   `processingErrors` (*type:* `list(String.t)`, *default:* `nil`) - A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
  *   `processingHints` (*type:* `list(String.t)`, *default:* `nil`) - A list of suggestions that may improve YouTube's ability to process the video.
  *   `processingWarnings` (*type:* `list(String.t)`, *default:* `nil`) - A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
  *   `tagSuggestions` (*type:* `list(GoogleApi.YouTube.V3.Model.VideoSuggestionsTagSuggestion.t)`, *default:* `nil`) - A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :editorSuggestions => list(String.t()) | nil,
          :processingErrors => list(String.t()) | nil,
          :processingHints => list(String.t()) | nil,
          :processingWarnings => list(String.t()) | nil,
          :tagSuggestions =>
            list(GoogleApi.YouTube.V3.Model.VideoSuggestionsTagSuggestion.t()) | nil
        }

  field(:editorSuggestions, type: :list)
  field(:processingErrors, type: :list)
  field(:processingHints, type: :list)
  field(:processingWarnings, type: :list)

  field(:tagSuggestions, as: GoogleApi.YouTube.V3.Model.VideoSuggestionsTagSuggestion, type: :list)
end

defimpl Poison.Decoder, for: GoogleApi.YouTube.V3.Model.VideoSuggestions do
  def decode(value, options) do
    GoogleApi.YouTube.V3.Model.VideoSuggestions.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.YouTube.V3.Model.VideoSuggestions do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
