def get(template_values)
      raise FamilySearch::Error::MethodNotAllowed unless allow.include?('get')
      etag            = template_values.delete(:etag)
      template_values = validate_values(template_values)
      t = Addressable::Template.new(@template)
      url = t.expand(template_values).to_s
      headers = {}
      headers.merge!('If-None-Match' => etag) unless etag.nil?
      @client.get(url, nil, headers)
    end
def get(template_values)
      raise FamilySearch::Error::MethodNotAllowed unless allow.include?('get')
      etag            = template_values.delete(:etag)
      template_values = validate_values(template_values)
      t = Addressable::Template.new(@template)
      url = t.expand(template_values).to_s
      headers = {}
      headers.merge!('If-None-Match' => etag) unless etag.nil?
      @client.get(url, nil, headers)
    end
Instantiate a new FamilySearch::URLTemplate

 *Args*    :
 - +client+: a FamilySearch::Client object.
 - +template_hash+: a hash containing template values from the Discovery Resource.
   Example:
     {
       "template" => "https://sandbox.familysearch.org/platform/tree/persons/{pid}{?access_token}",
       "type" => "application/json,application/x-fs-v1+json,application/x-fs-v1+xml,application/x-gedcomx-v1+json,application/x-gedcomx-v1+xml,application/xml,text/html",
       "accept" => "application/x-fs-v1+json,application/x-fs-v1+xml,application/x-gedcomx-v1+json,application/x-gedcomx-v1+xml",
       "allow" => "HEAD,GET,POST,DELETE,GET,POST",
       "title" => "Person"
     }
 *Returns* :
 - +FamilySearch::URLTemplate+ object
 *Raises*  :
 - +FamilySearch::Error::URLTemplateNotFound+: if the template_hash is nil.
   This is intended to catch problems if FamilySearch::Client#template method doesn't find
   a template and still instantiates this object.

 Calls HTTP GET on the URL template. It takes the +template_values+ hash and merges the values into the template.

 A template will contain a URL like this:
   https://sandbox.familysearch.org/platform/tree/persons-with-relationships{?access_token,person}
 or
   https://sandbox.familysearch.org/platform/tree/persons/{pid}/matches{?access_token}

 The {?person} type attributes in the first example will be passed as querystring parameters. These will automatically be URL Encoded
 by the underlying Faraday library that handles the HTTP request.

 The {pid} type attibutes will simply be substituted into the URL.

 *Note*: The +access_token+ parameter doesn't need to be passed here. This should be handled by the FamilySearch::Client's
 Authorization header.

 *Args*    :
 - +template_values+: A Hash object containing the values for the items in the URL template. For example, if the URL is:
     https://sandbox.familysearch.org/platform/tree/persons-with-relationships{?access_token,person}
   then you would pass a hash like this:
     :person => 'KWQS-BBQ'
   or
     'person' => 'KWQS-BBQ'
 *Returns* :
 - +Faraday::Response+ object. This object contains methods +body+, +headers+, and +status+. +body+ should contain a Hash of the
   parsed result of the request.
 *Raises*  :
 - +FamilySearch::Error::MethodNotAllowed+: if you call +get+ for a template that doesn't allow GET method.