# 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.ServiceNetworking.V1.Model.DotnetSettings do
  @moduledoc """
  Settings for Dotnet client libraries.

  ## Attributes

  *   `common` (*type:* `GoogleApi.ServiceNetworking.V1.Model.CommonLanguageSettings.t`, *default:* `nil`) - Some settings.
  *   `forcedNamespaceAliases` (*type:* `list(String.t)`, *default:* `nil`) - Namespaces which must be aliased in snippets due to a known (but non-generator-predictable) naming collision
  *   `handwrittenSignatures` (*type:* `list(String.t)`, *default:* `nil`) - Method signatures (in the form "service.method(signature)") which are provided separately, so shouldn't be generated. Snippets *calling* these methods are still generated, however.
  *   `ignoredResources` (*type:* `list(String.t)`, *default:* `nil`) - List of full resource types to ignore during generation. This is typically used for API-specific Location resources, which should be handled by the generator as if they were actually the common Location resources. Example entry: "documentai.googleapis.com/Location"
  *   `renamedResources` (*type:* `map()`, *default:* `nil`) - Map from full resource types to the effective short name for the resource. This is used when otherwise resource named from different services would cause naming collisions. Example entry: "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"
  *   `renamedServices` (*type:* `map()`, *default:* `nil`) - Map from original service names to renamed versions. This is used when the default generated types would cause a naming conflict. (Neither name is fully-qualified.) Example: Subscriber to SubscriberServiceApi.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :common => GoogleApi.ServiceNetworking.V1.Model.CommonLanguageSettings.t() | nil,
          :forcedNamespaceAliases => list(String.t()) | nil,
          :handwrittenSignatures => list(String.t()) | nil,
          :ignoredResources => list(String.t()) | nil,
          :renamedResources => map() | nil,
          :renamedServices => map() | nil
        }

  field(:common, as: GoogleApi.ServiceNetworking.V1.Model.CommonLanguageSettings)
  field(:forcedNamespaceAliases, type: :list)
  field(:handwrittenSignatures, type: :list)
  field(:ignoredResources, type: :list)
  field(:renamedResources, type: :map)
  field(:renamedServices, type: :map)
end

defimpl Poison.Decoder, for: GoogleApi.ServiceNetworking.V1.Model.DotnetSettings do
  def decode(value, options) do
    GoogleApi.ServiceNetworking.V1.Model.DotnetSettings.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.ServiceNetworking.V1.Model.DotnetSettings do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
