-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEntrepriseService.kt
76 lines (71 loc) · 3.49 KB
/
EntrepriseService.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package com.example.a00_tp_android
import android.util.JsonReader
import android.util.JsonToken
import java.io.IOException
import java.net.URL
import java.time.format.DateTimeFormatter
import java.util.*
import javax.net.ssl.HttpsURLConnection
class EntrepriseService
{
private val serverUrl = "https://entreprise.data.gouv.fr"
private val apiUrl = "$serverUrl/api/sirene"
private val entrepriseUrl = "$apiUrl/v1/full_text/%s"
fun getEntreprise(query: String): List<Entreprise>
{
val url = URL(String.format(entrepriseUrl, query))
var conn: HttpsURLConnection? = null
try
{
conn = url.openConnection() as HttpsURLConnection
conn.connect()
if (conn.responseCode != HttpsURLConnection.HTTP_OK) return emptyList()
val inputStream = conn.inputStream ?: return emptyList()
val reader = JsonReader(inputStream.bufferedReader())
val result = mutableListOf<Entreprise>()
reader.beginObject()
while (reader.hasNext())
{
if(reader.nextName().equals("etablissement"))
{
reader.beginArray()
while(reader.hasNext())
{
reader.beginObject()
val entreprise = Entreprise(null, null, null, null, null, null, null)
while (reader.hasNext())
{
when (reader.nextName())
{
"siret" -> if(reader.peek() !== JsonToken.NULL) entreprise.siret = reader.nextLong() else reader.skipValue()
"nom_raison_sociale" -> if(reader.peek() !== JsonToken.NULL) entreprise.raisonSociale = reader.nextString() else reader.skipValue()
"geo_adresse" -> if(reader.peek() !== JsonToken.NULL) entreprise.adresse = reader.nextString() else reader.skipValue()
"libelle_activite_principale_entreprise" -> if(reader.peek() !== JsonToken.NULL) entreprise.activitePrincipale = reader.nextString() else reader.skipValue()
"libelle_nature_juridique_entreprise" -> if(reader.peek() !== JsonToken.NULL) entreprise.natureJuridique = reader.nextString() else reader.skipValue()
"email" -> if(reader.peek() !== JsonToken.NULL) entreprise.email = reader.nextString() else reader.skipValue()
"departement" -> if(reader.peek() !== JsonToken.NULL) entreprise.departement = reader.nextString() else reader.skipValue()
else -> reader.skipValue()
}
}
reader.endObject()
result.add(entreprise)
}
reader.endArray()
}
else reader.skipValue()
}
reader.endObject()
reader.close()
result.sort()
return result
}
catch (e: IOException)
{
return emptyList()
}
finally
{
conn?.disconnect()
}
}
}