@@ -4,7 +4,9 @@ import android.content.Context
44import android.util.Log
55import com.google.gson.Gson
66import de.rpicloud.ipv64net.models.AccountInfo
7+ import de.rpicloud.ipv64net.models.AddDomainResult
78import de.rpicloud.ipv64net.models.DomainResult
9+ import de.rpicloud.ipv64net.models.IPResult
810import de.rpicloud.ipv64net.models.IntegrationResult
911import de.rpicloud.ipv64net.models.NetworkResult
1012import de.rpicloud.ipv64net.models.parseDomainResult
@@ -14,9 +16,11 @@ import kotlinx.coroutines.withContext
1416import okhttp3.Call
1517import okhttp3.Dns
1618import okhttp3.EventListener
19+ import okhttp3.FormBody
1720import okhttp3.OkHttpClient
1821import okhttp3.Protocol
1922import okhttp3.Request
23+ import okhttp3.RequestBody
2024import okhttp3.logging.HttpLoggingInterceptor
2125import java.net.Inet4Address
2226import java.net.Inet6Address
@@ -158,4 +162,155 @@ class NetworkService {
158162 }
159163 }
160164
165+ suspend fun GetMyIP (forV4 : Boolean = true, callback : (result: NetworkResult ) -> Unit ) {
166+
167+ val url = if (forV4) " https://ipv4.ipv64.net/update.php?howismyip" else " https://ipv6.ipv64.net/update.php?howismyip"
168+
169+ withContext(Dispatchers .IO ) {
170+ try {
171+ val gson = Gson ()
172+ val request = Request .Builder ()
173+ .url(url)
174+ .addHeader(" Content-Type" , " application/json; charset=utf-8" )
175+ .addHeader(" Accept" , " application/json; charset=utf-8" )
176+ .get()
177+ .build()
178+
179+ val response = OkHttpClientProvider .client.newCall(request).execute()
180+ val responseText = response.body.string()
181+ if (response.isSuccessful) {
182+ val result = gson.fromJson(responseText, IPResult ::class .java)
183+ println (" ♻️ - ${result.ip} " )
184+ callback(NetworkResult (" Success" , result, 200 ))
185+ } else {
186+ callback(NetworkResult (" Fehler: ${response.code} " , null , response.code))
187+ }
188+ } catch (e: Exception ) {
189+ callback(NetworkResult (e.localizedMessage, null , 500 ))
190+ }
191+ }
192+ }
193+
194+ suspend fun PostNewDomain (domain : String , callback : (result: NetworkResult ) -> Unit ) {
195+ val url = baseUrl
196+
197+ val formBody = FormBody .Builder ()
198+ .add(" add_domain" , domain)
199+ .build()
200+
201+ withContext(Dispatchers .IO ) {
202+ try {
203+ val gson = Gson ()
204+
205+ val request = Request .Builder ()
206+ .url(url)
207+ .addHeader(" Content-Type" , " application/json; charset=utf-8" )
208+ .addHeader(" Accept" , " application/json; charset=utf-8" )
209+ .addHeader(" Authorization" , " Bearer $_apiToken " )
210+ .post(formBody)
211+ .build()
212+
213+ val response = OkHttpClientProvider .client.newCall(request).execute()
214+ val responseText = response.body.string()
215+ if (response.isSuccessful) {
216+ val result = gson.fromJson(responseText, AddDomainResult ::class .java)
217+ withContext(Dispatchers .Main ) {
218+ println (" ♻️ - ${result.add_domain} " )
219+ callback(NetworkResult (" Success" , result, 200 ))
220+ }
221+ } else {
222+ val result = gson.fromJson(responseText, AddDomainResult ::class .java)
223+ withContext(Dispatchers .Main ) {
224+ callback(NetworkResult (" Fehler: ${response.code} " , result, response.code))
225+ }
226+ }
227+ } catch (e: Exception ) {
228+ withContext(Dispatchers .Main ) {
229+ callback(NetworkResult (e.localizedMessage, null , 500 ))
230+ }
231+ }
232+ }
233+ }
234+
235+ suspend fun DeleteDomain (domain : String , callback : (result: NetworkResult ) -> Unit ) {
236+ val url = baseUrl
237+
238+ val formBody = FormBody .Builder ()
239+ .add(" del_domain" , domain)
240+ .build()
241+
242+ withContext(Dispatchers .IO ) {
243+ try {
244+ val gson = Gson ()
245+
246+ val request = Request .Builder ()
247+ .url(url)
248+ .addHeader(" Content-Type" , " application/json; charset=utf-8" )
249+ .addHeader(" Accept" , " application/json; charset=utf-8" )
250+ .addHeader(" Authorization" , " Bearer $_apiToken " )
251+ .delete(formBody)
252+ .build()
253+
254+ val response = OkHttpClientProvider .client.newCall(request).execute()
255+ val responseText = response.body.string()
256+ if (response.isSuccessful) {
257+ val result = gson.fromJson(responseText, AddDomainResult ::class .java)
258+ withContext(Dispatchers .Main ) {
259+ println (" ♻️ - ${result.add_domain} " )
260+ callback(NetworkResult (" Success" , result, 200 ))
261+ }
262+ } else {
263+ val result = gson.fromJson(responseText, AddDomainResult ::class .java)
264+ withContext(Dispatchers .Main ) {
265+ callback(NetworkResult (" Fehler: ${response.code} " , result, response.code))
266+ }
267+ }
268+ } catch (e: Exception ) {
269+ withContext(Dispatchers .Main ) {
270+ callback(NetworkResult (e.localizedMessage, null , 500 ))
271+ }
272+ }
273+ }
274+ }
275+
276+ suspend fun DeleteDNSRecord (recordId : Int , callback : (result: NetworkResult ) -> Unit ) {
277+ val url = baseUrl
278+
279+ val formBody = FormBody .Builder ()
280+ .add(" del_record" , recordId.toString())
281+ .build()
282+
283+ withContext(Dispatchers .IO ) {
284+ try {
285+ val gson = Gson ()
286+
287+ val request = Request .Builder ()
288+ .url(url)
289+ .addHeader(" Content-Type" , " application/json; charset=utf-8" )
290+ .addHeader(" Accept" , " application/json; charset=utf-8" )
291+ .addHeader(" Authorization" , " Bearer $_apiToken " )
292+ .delete(formBody)
293+ .build()
294+
295+ val response = OkHttpClientProvider .client.newCall(request).execute()
296+ val responseText = response.body.string()
297+ if (response.isSuccessful) {
298+ val result = gson.fromJson(responseText, AddDomainResult ::class .java)
299+ withContext(Dispatchers .Main ) {
300+ println (" ♻️ - ${result.add_domain} " )
301+ callback(NetworkResult (" Success" , result, 200 ))
302+ }
303+ } else {
304+ val result = gson.fromJson(responseText, AddDomainResult ::class .java)
305+ withContext(Dispatchers .Main ) {
306+ callback(NetworkResult (" Fehler: ${response.code} " , result, response.code))
307+ }
308+ }
309+ } catch (e: Exception ) {
310+ withContext(Dispatchers .Main ) {
311+ callback(NetworkResult (e.localizedMessage, null , 500 ))
312+ }
313+ }
314+ }
315+ }
161316}
0 commit comments