Skip to content

Commit 76d6cf4

Browse files
committed
Add global variables and delete variable/header
1 parent b14a096 commit 76d6cf4

3 files changed

Lines changed: 33 additions & 3 deletions

File tree

‎src/main/java/nl/kingdev/graphqlclient/Client.java‎

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ public class Client {
1717

1818
private String uri;
1919
private Map<String, String> headers;
20+
private Map<String, String> globalVariables;
2021
private static Gson gson = new GsonBuilder().create();
2122

2223
public Client(String uri) {
2324
this.uri = uri;
2425
this.headers = new HashMap<>();
26+
this.globalVariables = new HashMap<>();
2527
}
2628

2729

@@ -39,6 +41,7 @@ private JsonObject makeQueryJson(Query query) {
3941
public <T> T first(Query query, String name, Class<T> type) {
4042

4143
try {
44+
query.getVariables().putAll(globalVariables);
4245
JsonObject request = makeQueryJson(query);
4346
JsonObject result = gson.fromJson(HttpUtil.post(this.uri, request.toString(), headers), JsonObject.class);
4447
return gson.fromJson(result.get("data").getAsJsonObject().get(name), type);
@@ -50,13 +53,12 @@ public <T> T first(Query query, String name, Class<T> type) {
5053
}
5154

5255
public <T> List<T> query(Query query, String name) {
53-
5456
try {
57+
query.getVariables().putAll(globalVariables);
5558
JsonObject request = makeQueryJson(query);
5659
JsonObject result = gson.fromJson(HttpUtil.post(this.uri, request.toString(), headers), JsonObject.class);
5760
JsonArray array = result.get("data").getAsJsonObject().get(name).getAsJsonArray();
58-
return gson.fromJson(array, new TypeToken<T>() {
59-
}.getType());
61+
return gson.fromJson(array, new TypeToken<T>() {}.getType());
6062
} catch (Exception e) {
6163
e.printStackTrace();
6264
}
@@ -76,5 +78,14 @@ public String getHeader(String name) {
7678
public void setHeader(String name, String value) {
7779
this.headers.put(name, value);
7880
}
81+
public void setGlobalVariable(String name, String value) {
82+
this.globalVariables.put(name, value);
83+
}
7984

85+
public void removeHeader(String name) {
86+
this.headers.remove(name);
87+
}
88+
public void removeGlobalVariable(String name) {
89+
this.globalVariables.remove(name);
90+
}
8091
}

‎src/main/java/nl/kingdev/graphqlclient/query/Query.java‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public Query setVariable(String name, Object value) {
2424
this.variables.put(name, value);
2525
return this;
2626
}
27+
28+
public Query removeVariable(String name) {
29+
this.variables.remove(name);
30+
return this;
31+
}
2732

2833
@Override
2934
public String toString() {

‎src/test/java/nl/kingdev/graphqlclient/ClientTest.java‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,20 @@ public void queryOne() {
4040
assertEquals("[email protected]", user.getEmail());
4141

4242
}
43+
@Test
44+
public void testGlobalVariable() {
45+
Client client = makeClient();
46+
client.setGlobalVariable("id", "1");
47+
User user = client.first(
48+
new Query("query user($id: ID!) { user(id: $id) { id, name, email } }"),
49+
"user",
50+
User.class
51+
);
52+
assertNotNull("User is null", user);
53+
assertEquals("1", user.getId());
54+
assertEquals("Leanne Graham", user.getName());
55+
assertEquals("[email protected]", user.getEmail());
56+
}
4357

4458
private class Todo {
4559
String id, description;

0 commit comments

Comments
 (0)