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