# 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.Plus.V1.Model.Activity do
  @moduledoc """


  ## Attributes

  *   `access` (*type:* `GoogleApi.Plus.V1.Model.Acl.t`, *default:* `nil`) - Identifies who has access to see this activity.
  *   `actor` (*type:* `GoogleApi.Plus.V1.Model.ActivityActor.t`, *default:* `nil`) - The person who performed this activity.
  *   `address` (*type:* `String.t`, *default:* `nil`) - Street address where this activity occurred.
  *   `annotation` (*type:* `String.t`, *default:* `nil`) - Additional content added by the person who shared this activity, applicable only when resharing an activity.
  *   `crosspostSource` (*type:* `String.t`, *default:* `nil`) - If this activity is a crosspost from another system, this property specifies the ID of the original activity.
  *   `etag` (*type:* `String.t`, *default:* `nil`) - ETag of this response for caching purposes.
  *   `geocode` (*type:* `String.t`, *default:* `nil`) - Latitude and longitude where this activity occurred. Format is latitude followed by longitude, space separated.
  *   `id` (*type:* `String.t`, *default:* `nil`) - The ID of this activity.
  *   `kind` (*type:* `String.t`, *default:* `plus#activity`) - Identifies this resource as an activity. Value: "plus#activity".
  *   `location` (*type:* `GoogleApi.Plus.V1.Model.Place.t`, *default:* `nil`) - The location where this activity occurred.
  *   `object` (*type:* `GoogleApi.Plus.V1.Model.ActivityObject.t`, *default:* `nil`) - The object of this activity.
  *   `placeId` (*type:* `String.t`, *default:* `nil`) - ID of the place where this activity occurred.
  *   `placeName` (*type:* `String.t`, *default:* `nil`) - Name of the place where this activity occurred.
  *   `provider` (*type:* `GoogleApi.Plus.V1.Model.ActivityProvider.t`, *default:* `nil`) - The service provider that initially published this activity.
  *   `published` (*type:* `DateTime.t`, *default:* `nil`) - The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
  *   `radius` (*type:* `String.t`, *default:* `nil`) - Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
  *   `title` (*type:* `String.t`, *default:* `nil`) - Title of this activity.
  *   `updated` (*type:* `DateTime.t`, *default:* `nil`) - The time at which this activity was last updated. Formatted as an RFC 3339 timestamp.
  *   `url` (*type:* `String.t`, *default:* `nil`) - The link to this activity.
  *   `verb` (*type:* `String.t`, *default:* `nil`) - This activity's verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:  
      - "post" - Publish content to the stream. 
      - "share" - Reshare an activity.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :access => GoogleApi.Plus.V1.Model.Acl.t(),
          :actor => GoogleApi.Plus.V1.Model.ActivityActor.t(),
          :address => String.t(),
          :annotation => String.t(),
          :crosspostSource => String.t(),
          :etag => String.t(),
          :geocode => String.t(),
          :id => String.t(),
          :kind => String.t(),
          :location => GoogleApi.Plus.V1.Model.Place.t(),
          :object => GoogleApi.Plus.V1.Model.ActivityObject.t(),
          :placeId => String.t(),
          :placeName => String.t(),
          :provider => GoogleApi.Plus.V1.Model.ActivityProvider.t(),
          :published => DateTime.t(),
          :radius => String.t(),
          :title => String.t(),
          :updated => DateTime.t(),
          :url => String.t(),
          :verb => String.t()
        }

  field(:access, as: GoogleApi.Plus.V1.Model.Acl)
  field(:actor, as: GoogleApi.Plus.V1.Model.ActivityActor)
  field(:address)
  field(:annotation)
  field(:crosspostSource)
  field(:etag)
  field(:geocode)
  field(:id)
  field(:kind)
  field(:location, as: GoogleApi.Plus.V1.Model.Place)
  field(:object, as: GoogleApi.Plus.V1.Model.ActivityObject)
  field(:placeId)
  field(:placeName)
  field(:provider, as: GoogleApi.Plus.V1.Model.ActivityProvider)
  field(:published, as: DateTime)
  field(:radius)
  field(:title)
  field(:updated, as: DateTime)
  field(:url)
  field(:verb)
end

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

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