# File lib/chef_zero/chef_data/data_normalizer.rb, line 82
      def self.normalize_cookbook(endpoint, org_prefix, cookbook, name, version, base_uri, method,
                                  is_cookbook_artifact=false)
        # TODO I feel dirty
        if method != 'PUT'
          cookbook.each_pair do |key, value|
            if value.is_a?(Array)
              value.each do |file|
                if file.is_a?(Hash) && file.has_key?('checksum')
                  file['url'] ||= endpoint.build_uri(base_uri, org_prefix + ['file_store', 'checksums', file['checksum']])
                end
              end
            end
          end
          cookbook['name'] ||= "#{name}-#{version}"
          # TODO it feels wrong, but the real chef server doesn't expand 'version', so we don't either.

          cookbook['frozen?'] ||= false
          cookbook['metadata'] ||= {}
          cookbook['metadata']['version'] ||= version

          # defaults set by the client and not the Server:
          # metadata[name, description, maintainer, maintainer_email, license]

          cookbook['metadata']['long_description'] ||= ""
          cookbook['metadata']['dependencies'] ||= {}
          cookbook['metadata']['attributes'] ||= {}
          cookbook['metadata']['recipes'] ||= {}
        end

        if is_cookbook_artifact
          cookbook.delete('json_class')
        else
          cookbook['cookbook_name'] ||= name
          cookbook['json_class'] ||= 'Chef::CookbookVersion'
        end

        cookbook['chef_type'] ||= 'cookbook_version'
        if method == 'MIN'
          cookbook['metadata'].delete('attributes')
          cookbook['metadata'].delete('long_description')
        end
        cookbook
      end