using RestSharp; using SimpleJson; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Chapter5 { class Ongkir { public static List GetKotaList() { List returnList = new List(); var client = new RestClient("https://api.rajaongkir.com/starter/city"); var request = new RestRequest(Method.GET); request.AddHeader("key", "c31a7ac4eaed9d6d966f5af4cf2aa4b9"); IRestResponse response = client.Execute(request); JsonObject rajaObj = (JsonObject)SimpleJson.SimpleJson.DeserializeObject(response.Content); JsonObject contentObj = (JsonObject)rajaObj["rajaongkir"]; JsonArray cityArray = (JsonArray)contentObj["results"]; foreach(JsonObject city in cityArray) { returnList.Add((string) city["city_name"]); } return returnList; } public static List GetLayananList (int idAsal, int idTujuan, int berat, string kurir) { List returnList = new List(); var client = new RestClient("https://api.rajaongkir.com/starter/cost"); var request = new RestRequest(Method.POST); request.AddHeader("content-type", "application/x-www-form-urlencoded"); request.AddHeader("key", "c31a7ac4eaed9d6d966f5af4cf2aa4b9"); request.AddParameter("application/x-www-form-urlencoded", $"origin={idAsal.ToString()}&destination={idTujuan.ToString()}" + $"&weight={berat.ToString()}&courier={kurir}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); JsonObject obj = (JsonObject)SimpleJson.SimpleJson.DeserializeObject(response.Content); JsonObject rajaObj = (JsonObject)obj["rajaongkir"]; JsonArray resultsArray = (JsonArray)rajaObj["results"]; JsonObject courierInfo = (JsonObject)resultsArray[0]; JsonArray servicesArray = (JsonArray)courierInfo["costs"]; foreach(JsonObject service in servicesArray) { string layanan = (string)courierInfo["name"]; layanan += "-" + (string)service["service"]; JsonArray detail = (JsonArray)service["cost"]; JsonObject infoService = (JsonObject)detail[0]; layanan += " Rp" + (infoService["value"]).ToString(); layanan += " " + (string)infoService["etd"] + "Hari"; returnList.Add(layanan); } return returnList; } } } using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Chapter5 { public partial class Form1 : Form { List listKota = new List(); public Form1() { InitializeComponent(); listKota = Ongkir.GetKotaList(); foreach(string kota in listKota) { tbAsal.AutoCompleteCustomSource.Add(kota); tbTujuan.AutoCompleteCustomSource.Add(kota); } } private void TampilkanDaftar(List daftar) { lblDaftarLayanan.Text = ""; foreach(string item in daftar) { lblDaftarLayanan.Text += "- " + item + Environment.NewLine; } } private int GetIdKota(string kota) { return listKota.IndexOf(kota)+1; } private void btnCekHarga_Click(object sender, EventArgs e) { if(tbAsal.Text != "" || tbTujuan.Text != "" || tbBerat.Text != "") { string kurir = ""; if (rbJne.Checked) kurir = "jne"; else if (rbPos.Checked) kurir = "pos"; else if (rbTiki.Checked) kurir = "tiki"; List daftarLayanan = Ongkir.GetLayananList (GetIdKota(tbAsal.Text), GetIdKota(tbTujuan.Text), int.Parse(tbBerat.Text), kurir); TampilkanDaftar(daftarLayanan); } } } }