private IEnumerator RequestMissionData() { ProgressDialog progressDialog = ProgressDialog.Create("Fetching Missions"); using (UnityWebRequest request = UnityWebRequest.Get(WebConfig.webAPI + "mission/get_missions.php")) { progressDialog.SetWebRequest(request); yield return(request.SendWebRequest()); string error = WebConfig.GetErrorString(request); if (string.IsNullOrEmpty(error)) { // Success MissionResponse response = MissionResponse.FromJson(request.downloadHandler.text); m_Missions = response.missions; PopulateMissions(m_MissionFilter); } else { // Failure Debug.Log(error); InfoDialog.Create("", error.ToString()); } } progressDialog.Close(); }
/// <summary> /// Find the closest missing to a given address /// </summary> /// <param name="originAddress"></param> /// <returns></returns> public async Task <(MissionResponse, double)> FindClosestMission(string originAddress) { double smallestDistance = 0; Mission mission = null; //Get all missions List <Mission> missions = await _missionRepository.GetMissions(); //Create Task<HttpResponseMessage> for each API call List <Task <HttpResponseMessage> > responseTasks = await GetResponseTasks(missions, originAddress); try { //Run API calls in parallel HttpResponseMessage[] responses = await Task.WhenAll(responseTasks); //Create Task<string> for each response.Content List <Task <string> > contentTasks = GetContentTasks(responses); //Get response.Content in parallel string[] contents = await Task.WhenAll(contentTasks); //Get the closest mission and the distance (mission, smallestDistance) = GetClosestMission(missions, contents); } catch (Exception ex) { //TODO:add logs here } MissionResponse missionResponse = _mapper.Map <MissionResponse>(mission); return(missionResponse, smallestDistance); }
public static void UpdateMission(string json) { if (mission != null) { JsonUtility.FromJsonOverwrite(json, mission); } else { mission = JsonUtility.FromJson <Mission>(json); } missionResponse = new MissionResponse(); }
public static WWW SendMissionResponse(Mission mission, MissionResponse missionResponse) { WWWForm responseForm = new WWWForm(); if (missionResponse.user_id != 0) { responseForm.AddField("user_id", missionResponse.user_id); Debug.Log("User ID: " + missionResponse.user_id); } if (missionResponse.group_id != 0) { responseForm.AddField("group_id", missionResponse.group_id); Debug.Log("Group ID: " + missionResponse.group_id); } responseForm.AddField("answerable_id", missionResponse.mission_id); responseForm.AddField("answerable_type", missionResponse.type); Debug.Log("ID: " + missionResponse.mission_id + " / Type: " + missionResponse.type); if (mission.gps_enabled) { Debug.Log("Coordinates: " + missionResponse.coordinates); responseForm.AddField("coordinates", missionResponse.coordinates); } if (mission.text_enabled) { Debug.Log("Text: '" + missionResponse.text + "'"); responseForm.AddField("text", missionResponse.text); } if (mission.photo_enabled) { Debug.Log("Photo Ready"); responseForm.AddBinaryData("photo", missionResponse.photo, "Photo.png", "image/png"); } if (mission.audio_enabled) { Debug.Log("Audio Ready"); responseForm.AddBinaryData("audio", missionResponse.audio, "voice.wav", "audio/wav"); } WebAPI.apiPlace = "/answer/create/"; return(WebAPI.Post(responseForm)); }
public static void UpdateMission(Mission newMission) { mission = newMission; missionResponse = new MissionResponse(); }