class Spaceship::Tunes::AppDetails

def factory(attrs)

This is used to create a new object based on the server response.
Create a new object based on a hash.
def factory(attrs)
  obj = self.new(attrs)
  obj.unfold_languages
  return obj
end

def primary_category=(value)


Custom Setters
def primary_category=(value)
  value = "MZGenre.#{value}" unless value.include? "MZGenre"
  super(value)
end

def primary_first_sub_category=(value)

def primary_first_sub_category=(value)
  value = "MZGenre.#{value}" unless value.include? "MZGenre"
  super(value)
end

def primary_second_sub_category=(value)

def primary_second_sub_category=(value)
  value = "MZGenre.#{value}" unless value.include? "MZGenre"
  super(value)
end

def save!

Push all changes that were made back to iTunes Connect
def save!
  client.update_app_details!(application.apple_id, raw_data)
rescue Spaceship::TunesClient::ITunesConnectError => ex
  if ex.to_s == "operation_failed"
    # That's alright, we get this error message if nothing has changed
  else
    raise ex
  end
end

def secondary_category=(value)

def secondary_category=(value)
  value = "MZGenre.#{value}" unless value.include? "MZGenre"
  super(value)
end

def secondary_first_sub_category=(value)

def secondary_first_sub_category=(value)
  value = "MZGenre.#{value}" unless value.include? "MZGenre"
  super(value)
end

def secondary_second_sub_category=(value)

def secondary_second_sub_category=(value)
  value = "MZGenre.#{value}" unless value.include? "MZGenre"
  super(value)
end

def setup

####################################################
@!group General
####################################################
def setup
end

def unfold_languages

Prefill name, privacy url
def unfold_languages
  {
    name: :name,
    privacyPolicyUrl: :privacy_url,
    privacyPolicy: :apple_tv_privacy_policy
  }.each do |json, attribute|
    instance_variable_set("@#{attribute}".to_sym, LanguageItem.new(json, languages))
  end
end