lib/api/structs/user.ex

defmodule Noizu.Github.User do
  defstruct [
    :login,
    :id,
    :node_id,
    :avatar_url,
    :gravatar_id,
    :url,
    :html_url,
    :followers_url,
    :following_url,
    :gists_url,
    :starred_url,
    :subscriptions_url,
    :organizations_url,
    :repos_url,
    :events_url,
    :received_events_url,
    :type,
    :site_admin
  ]



  def format(issue, format)
  def format(issue, format) when is_list(issue) do
    Enum.map(issue, &format(&1, format))
  end
  def format(nil, _), do: nil
  def format(%__MODULE__{} = this, :basic) do
    %{
      login: this.login,
      avatar_url: this.avatar_url,
      url: this.html_url
    }
  end

  def from_json(nil), do: nil

  def from_json(%{
    login:  login,
    id:  id,
    node_id:  node_id,
    avatar_url:  avatar_url,
    gravatar_id:  gravatar_id,
    url:  url,
    html_url:  html_url,
    followers_url:  followers_url,
    following_url:  following_url,
    gists_url:  gists_url,
    starred_url:  starred_url,
    subscriptions_url:  subscriptions_url,
    organizations_url:  organizations_url,
    repos_url:  repos_url,
    events_url:  events_url,
    received_events_url:  received_events_url,
    type:  type,
    site_admin:  site_admin,
  }) do
    %__MODULE__{
      login: login,
      id: id,
      node_id: node_id,
      avatar_url: avatar_url,
      gravatar_id: gravatar_id,
      url: url,
      html_url: html_url,
      followers_url: followers_url,
      following_url: following_url,
      gists_url: gists_url,
      starred_url: starred_url,
      subscriptions_url: subscriptions_url,
      organizations_url: organizations_url,
      repos_url: repos_url,
      events_url: events_url,
      received_events_url: received_events_url,
      type: type,
      site_admin: site_admin,
    }
  end
end