defmodule GitHub.Meta do @moduledoc """ Provides API endpoints related to meta """ @default_client GitHub.Client @doc """ Get GitHub meta information Returns meta information about GitHub, including a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://docs.github.com/articles/about-github-s-ip-addresses/)." The API's response also includes a list of GitHub's domain names. The values shown in the documentation's response are example values. You must always query the API directly to get the latest values. **Note:** This endpoint returns both IPv4 and IPv6 addresses. However, not all features support IPv6. You should refer to the specific documentation for each feature to determine if IPv6 is supported. ## Resources * [API method documentation](https://docs.github.com/rest/meta/meta#get-apiname-meta-information) """ @spec get(keyword) :: {:ok, GitHub.ApiOverview.t()} | {:error, GitHub.Error.t()} def get(opts \\ []) do client = opts[:client] || @default_client client.request(%{ args: [], call: {GitHub.Meta, :get}, url: "/meta", method: :get, response: [{200, {GitHub.ApiOverview, :t}}, {304, :null}], opts: opts }) end @doc """ Get all API versions Get all supported GitHub API versions. ## Resources * [API method documentation](https://docs.github.com/rest/meta/meta#get-all-api-versions) """ @spec get_all_versions(keyword) :: {:ok, [Date.t()]} | {:error, GitHub.Error.t()} def get_all_versions(opts \\ []) do client = opts[:client] || @default_client client.request(%{ args: [], call: {GitHub.Meta, :get_all_versions}, url: "/versions", method: :get, response: [{200, [string: :date]}, {404, {GitHub.BasicError, :t}}], opts: opts }) end @doc """ Get Octocat Get the octocat as ASCII art ## Options * `s`: The words to show in Octocat's speech bubble ## Resources * [API method documentation](https://docs.github.com/rest/meta/meta#get-octocat) """ @spec get_octocat(keyword) :: {:ok, String.t()} | {:error, GitHub.Error.t()} def get_octocat(opts \\ []) do client = opts[:client] || @default_client query = Keyword.take(opts, [:s]) client.request(%{ args: [], call: {GitHub.Meta, :get_octocat}, url: "/octocat", method: :get, query: query, response: [{200, {:string, :generic}}], opts: opts }) end @doc """ Get the Zen of GitHub Get a random sentence from the Zen of GitHub ## Resources * [API method documentation](https://docs.github.com/rest/meta/meta#get-the-zen-of-github) """ @spec get_zen(keyword) :: {:ok, String.t()} | {:error, GitHub.Error.t()} def get_zen(opts \\ []) do client = opts[:client] || @default_client client.request(%{ args: [], call: {GitHub.Meta, :get_zen}, url: "/zen", method: :get, response: [{200, {:string, :generic}}], opts: opts }) end @doc """ GitHub API Root Get Hypermedia links to resources accessible in GitHub's REST API ## Resources * [API method documentation](https://docs.github.com/rest/meta/meta#github-api-root) """ @spec root(keyword) :: {:ok, GitHub.Root.t()} | {:error, GitHub.Error.t()} def root(opts \\ []) do client = opts[:client] || @default_client client.request(%{ args: [], call: {GitHub.Meta, :root}, url: "/", method: :get, response: [{200, {GitHub.Root, :t}}], opts: opts }) end end