// ---------[ UPLOADING ]--------- public static void SubmitNewMod(EditableModProfile modEdits, Action <ModProfile> modSubmissionSucceeded, Action <WebRequestError> modSubmissionFailed) { Debug.Assert(modEdits.name.isDirty && modEdits.summary.isDirty); Debug.Assert(File.Exists(modEdits.logoLocator.value.url)); // - Initial Mod Submission - var parameters = new AddModParameters(); parameters.name = modEdits.name.value; parameters.summary = modEdits.summary.value; parameters.logo = BinaryUpload.Create(Path.GetFileName(modEdits.logoLocator.value.url), File.ReadAllBytes(modEdits.logoLocator.value.url)); if (modEdits.visibility.isDirty) { parameters.visibility = modEdits.visibility.value; } if (modEdits.nameId.isDirty) { parameters.nameId = modEdits.nameId.value; } if (modEdits.description.isDirty) { parameters.description = modEdits.description.value; } if (modEdits.homepageURL.isDirty) { parameters.nameId = modEdits.homepageURL.value; } if (modEdits.metadataBlob.isDirty) { parameters.metadataBlob = modEdits.metadataBlob.value; } if (modEdits.nameId.isDirty) { parameters.nameId = modEdits.nameId.value; } if (modEdits.tags.isDirty) { parameters.tags = modEdits.tags.value; } // NOTE(@jackson): As add Mod takes more parameters than edit, // we can ignore some of the elements in the EditModParameters // when passing to SubmitModProfileComponents var remainingModEdits = new EditableModProfile(); remainingModEdits.youtubeURLs = modEdits.youtubeURLs; remainingModEdits.sketchfabURLs = modEdits.sketchfabURLs; remainingModEdits.galleryImageLocators = modEdits.galleryImageLocators; APIClient.AddMod(parameters, result => SubmitModProfileComponents(result, remainingModEdits, modSubmissionSucceeded, modSubmissionFailed), modSubmissionFailed); }
// ---------[ Submission Functions ]--------- /// <summary>Submits a new mod to the server.</summary> public void SubmitNewMod(EditableModProfile newModProfile) { Debug.Assert(newModProfile != null); // - Client-Side error-checking - string errorMessage = null; if (String.IsNullOrEmpty(newModProfile.name.value)) { errorMessage = "Mod Profile needs to be named before it can be uploaded"; } else if (String.IsNullOrEmpty(newModProfile.summary.value)) { errorMessage = "Mod Profile needs to be given a summary before it can be uploaded"; } // Send data if (errorMessage == null) { // - string params - this.addModParams = new AddModParameters(); this.addModParams.name = newModProfile.name.value; this.addModParams.summary = newModProfile.summary.value; if (newModProfile.visibility.isDirty) { this.addModParams.visibility = newModProfile.visibility.value; } if (newModProfile.nameId.isDirty) { this.addModParams.nameId = newModProfile.nameId.value; } if (newModProfile.descriptionAsHTML.isDirty) { this.addModParams.descriptionAsHTML = newModProfile.descriptionAsHTML.value; } if (newModProfile.homepageURL.isDirty) { this.addModParams.nameId = newModProfile.homepageURL.value; } if (newModProfile.metadataBlob.isDirty) { this.addModParams.metadataBlob = newModProfile.metadataBlob.value; } if (newModProfile.nameId.isDirty) { this.addModParams.nameId = newModProfile.nameId.value; } if (newModProfile.tags.isDirty) { this.addModParams.tags = newModProfile.tags.value; } // - editable params - if (newModProfile.youTubeURLs.isDirty || newModProfile.sketchfabURLs.isDirty || newModProfile.galleryImageLocators.isDirty) { // NOTE(@jackson): As add Mod takes more parameters than edit, // we can ignore some of the elements in the EditModParameters // when passing to SubmitModChanges_Internal this.eModProfile = new EditableModProfile(); this.eModProfile.youTubeURLs = newModProfile.youTubeURLs; this.eModProfile.sketchfabURLs = newModProfile.sketchfabURLs; this.eModProfile.galleryImageLocators = newModProfile.galleryImageLocators; } // - data params - DataStorage.ReadFile(newModProfile.logoLocator.value.url, this.SubmitNewMod_OnReadLogo); } else { this.SubmissionError_Local(errorMessage); } }