     meta_tag_by(body, "image")
   end
 
-  # attribute = "title", "description", "image", "url", "type"
+  def og_type(body) do
+    meta_tag_by(body, "type")
+  end
+
+  def og_url(body) do
+    meta_tag_by(body, "url")
+  end
+
   @spec meta_tag_by(String.t, String.t) :: [String.t]
-  defp meta_tag_by(body, attribute) when attribute in ["title", "image"] do
+  defp meta_tag_by(body, attribute) when attribute in ["title", "image", "type", "url"] do
     Floki.find(body, "[property=\"og:#{attribute}\"]")
     |> Floki.attribute("content")
   end

    str = :erlang.binary_to_list(body)
    "#{Mbcs.decode!(str, :cp932, return: :list)}"
  end
end

defmodule MetaInspector.Meta do
  defstruct og_title: nil, og_type: nil, og_url: nil, og_image: nil
  @type t :: %__MODULE__{og_title: char_list, og_type: char_list, og_url: char_list, og_image: char_list}
end

defmodule MetaInspector do
  defstruct status: nil, title: nil, best_title: nil, best_image: nil, meta: nil
  @type t :: %__MODULE__{status: integer, title: String.t, best_title: String.t, best_image: String.t, meta: MetaInspector.Meta.t}

  def new(url) do
    document = HTTPoison.get!(url)
    body = document.body |> to_utf8
    %MetaInspector{status: status(document), title: title(body), best_title: best_title(body), best_image: best_image(body), meta: meta(body)}
  end

  def status(document) do
