defmodule GitHub.User do @moduledoc """ Provides struct and types for a User """ use GitHub.Encoder @type private :: %__MODULE__{ __info__: map, avatar_url: String.t(), bio: String.t() | nil, blog: String.t() | nil, business_plus: boolean | nil, collaborators: integer, company: String.t() | nil, created_at: DateTime.t(), disk_usage: integer, email: String.t() | nil, events_url: String.t(), followers: integer, followers_url: String.t(), following: integer, following_url: String.t(), gists_url: String.t(), gravatar_id: String.t() | nil, hireable: boolean | nil, html_url: String.t(), id: integer, ldap_dn: String.t() | nil, location: String.t() | nil, login: String.t(), name: String.t() | nil, node_id: String.t(), organizations_url: String.t(), owned_private_repos: integer, plan: GitHub.User.Plan.private() | nil, private_gists: integer, public_gists: integer, public_repos: integer, received_events_url: String.t(), repos_url: String.t(), site_admin: boolean, starred_url: String.t(), subscriptions_url: String.t(), suspended_at: DateTime.t() | nil, total_private_repos: integer, twitter_username: String.t() | nil, two_factor_authentication: boolean, type: String.t(), updated_at: DateTime.t(), url: String.t() } @type public :: %__MODULE__{ __info__: map, avatar_url: String.t(), bio: String.t() | nil, blog: String.t() | nil, collaborators: integer | nil, company: String.t() | nil, created_at: DateTime.t(), disk_usage: integer | nil, email: String.t() | nil, events_url: String.t(), followers: integer, followers_url: String.t(), following: integer, following_url: String.t(), gists_url: String.t(), gravatar_id: String.t() | nil, hireable: boolean | nil, html_url: String.t(), id: integer, location: String.t() | nil, login: String.t(), name: String.t() | nil, node_id: String.t(), organizations_url: String.t(), owned_private_repos: integer | nil, plan: GitHub.User.Plan.public() | nil, private_gists: integer | nil, public_gists: integer, public_repos: integer, received_events_url: String.t(), repos_url: String.t(), site_admin: boolean, starred_url: String.t(), subscriptions_url: String.t(), suspended_at: DateTime.t() | nil, total_private_repos: integer | nil, twitter_username: String.t() | nil, type: String.t(), updated_at: DateTime.t(), url: String.t() } @type simple :: %__MODULE__{ __info__: map, avatar_url: String.t(), email: String.t() | nil, events_url: String.t(), followers_url: String.t(), following_url: String.t(), gists_url: String.t(), gravatar_id: String.t() | nil, html_url: String.t(), id: integer, login: String.t(), name: String.t() | nil, node_id: String.t(), organizations_url: String.t(), received_events_url: String.t(), repos_url: String.t(), site_admin: boolean, starred_at: String.t() | nil, starred_url: String.t(), subscriptions_url: String.t(), type: String.t(), url: String.t() } defstruct [ :__info__, :avatar_url, :bio, :blog, :business_plus, :collaborators, :company, :created_at, :disk_usage, :email, :events_url, :followers, :followers_url, :following, :following_url, :gists_url, :gravatar_id, :hireable, :html_url, :id, :ldap_dn, :location, :login, :name, :node_id, :organizations_url, :owned_private_repos, :plan, :private_gists, :public_gists, :public_repos, :received_events_url, :repos_url, :site_admin, :starred_at, :starred_url, :subscriptions_url, :suspended_at, :total_private_repos, :twitter_username, :two_factor_authentication, :type, :updated_at, :url ] @doc false @spec __fields__(atom) :: keyword def __fields__(:private) do [ avatar_url: {:string, :uri}, bio: {:union, [{:string, :generic}, :null]}, blog: {:union, [{:string, :generic}, :null]}, business_plus: :boolean, collaborators: :integer, company: {:union, [{:string, :generic}, :null]}, created_at: {:string, :date_time}, disk_usage: :integer, email: {:union, [{:string, :email}, :null]}, events_url: {:string, :generic}, followers: :integer, followers_url: {:string, :uri}, following: :integer, following_url: {:string, :generic}, gists_url: {:string, :generic}, gravatar_id: {:union, [{:string, :generic}, :null]}, hireable: {:union, [:boolean, :null]}, html_url: {:string, :uri}, id: :integer, ldap_dn: {:string, :generic}, location: {:union, [{:string, :generic}, :null]}, login: {:string, :generic}, name: {:union, [{:string, :generic}, :null]}, node_id: {:string, :generic}, organizations_url: {:string, :uri}, owned_private_repos: :integer, plan: {GitHub.User.Plan, :private}, private_gists: :integer, public_gists: :integer, public_repos: :integer, received_events_url: {:string, :uri}, repos_url: {:string, :uri}, site_admin: :boolean, starred_url: {:string, :generic}, subscriptions_url: {:string, :uri}, suspended_at: {:union, [{:string, :date_time}, :null]}, total_private_repos: :integer, twitter_username: {:union, [{:string, :generic}, :null]}, two_factor_authentication: :boolean, type: {:string, :generic}, updated_at: {:string, :date_time}, url: {:string, :uri} ] end def __fields__(:public) do [ avatar_url: {:string, :uri}, bio: {:union, [{:string, :generic}, :null]}, blog: {:union, [{:string, :generic}, :null]}, collaborators: :integer, company: {:union, [{:string, :generic}, :null]}, created_at: {:string, :date_time}, disk_usage: :integer, email: {:union, [{:string, :email}, :null]}, events_url: {:string, :generic}, followers: :integer, followers_url: {:string, :uri}, following: :integer, following_url: {:string, :generic}, gists_url: {:string, :generic}, gravatar_id: {:union, [{:string, :generic}, :null]}, hireable: {:union, [:boolean, :null]}, html_url: {:string, :uri}, id: :integer, location: {:union, [{:string, :generic}, :null]}, login: {:string, :generic}, name: {:union, [{:string, :generic}, :null]}, node_id: {:string, :generic}, organizations_url: {:string, :uri}, owned_private_repos: :integer, plan: {GitHub.User.Plan, :public}, private_gists: :integer, public_gists: :integer, public_repos: :integer, received_events_url: {:string, :uri}, repos_url: {:string, :uri}, site_admin: :boolean, starred_url: {:string, :generic}, subscriptions_url: {:string, :uri}, suspended_at: {:union, [{:string, :date_time}, :null]}, total_private_repos: :integer, twitter_username: {:union, [{:string, :generic}, :null]}, type: {:string, :generic}, updated_at: {:string, :date_time}, url: {:string, :uri} ] end def __fields__(:simple) do [ avatar_url: {:string, :uri}, email: {:union, [{:string, :generic}, :null]}, events_url: {:string, :generic}, followers_url: {:string, :uri}, following_url: {:string, :generic}, gists_url: {:string, :generic}, gravatar_id: {:union, [{:string, :generic}, :null]}, html_url: {:string, :uri}, id: :integer, login: {:string, :generic}, name: {:union, [{:string, :generic}, :null]}, node_id: {:string, :generic}, organizations_url: {:string, :uri}, received_events_url: {:string, :uri}, repos_url: {:string, :uri}, site_admin: :boolean, starred_at: {:string, :generic}, starred_url: {:string, :generic}, subscriptions_url: {:string, :uri}, type: {:string, :generic}, url: {:string, :uri} ] end end