20
20
import org .zendesk .client .v2 .model .Audit ;
21
21
import org .zendesk .client .v2 .model .Comment ;
22
22
import org .zendesk .client .v2 .model .Field ;
23
+ import org .zendesk .client .v2 .model .Forum ;
23
24
import org .zendesk .client .v2 .model .Group ;
25
+ import org .zendesk .client .v2 .model .GroupMembership ;
24
26
import org .zendesk .client .v2 .model .Identity ;
25
27
import org .zendesk .client .v2 .model .Organization ;
26
28
import org .zendesk .client .v2 .model .OrganizationField ;
27
29
import org .zendesk .client .v2 .model .SearchResultEntity ;
30
+ import org .zendesk .client .v2 .model .Status ;
28
31
import org .zendesk .client .v2 .model .Ticket ;
32
+ import org .zendesk .client .v2 .model .Topic ;
29
33
import org .zendesk .client .v2 .model .User ;
30
34
import org .zendesk .client .v2 .model .UserField ;
31
35
40
44
import java .util .Map ;
41
45
import java .util .NoSuchElementException ;
42
46
import java .util .concurrent .ExecutionException ;
43
- import org .zendesk .client .v2 .model .Status ;
44
47
45
48
46
49
/**
@@ -66,7 +69,7 @@ private static Map<String, Class<? extends SearchResultEntity>> searchResultType
66
69
result .put ("user" , User .class );
67
70
result .put ("group" , Group .class );
68
71
result .put ("organization" , Organization .class );
69
- // result.put("topic", Topic.class) TODO add this when supported
72
+ result .put ("topic" , Topic .class );
70
73
return Collections .unmodifiableMap (result );
71
74
}
72
75
@@ -132,7 +135,7 @@ public Ticket getTicket(long id) {
132
135
return complete (submit (req ("GET" , tmpl ("/tickets/{id}.json" ).set ("id" , id )), handle (Ticket .class ,
133
136
"ticket" )));
134
137
}
135
-
138
+
136
139
public List <Ticket > getTicketIncidents (long id ) {
137
140
return complete (submit (req ("GET" , tmpl ("/tickets/{id}/incidents.json" ).set ("id" , id )),
138
141
handleList (Ticket .class , "tickets" )));
@@ -177,14 +180,14 @@ public void deleteTickets(long id, long... ids) {
177
180
public Iterable <Ticket > getTickets () {
178
181
return new PagedIterable <Ticket >(cnst ("/tickets.json" ), handleList (Ticket .class , "tickets" ));
179
182
}
180
-
183
+
181
184
public Iterable <Ticket > getTicketsByStatus (Status ... ticketStatus ) {
182
- return new PagedIterable <Ticket >(tmpl ("/tickets.json{?status}" ).set ("status" , statusArray (ticketStatus )),
185
+ return new PagedIterable <Ticket >(tmpl ("/tickets.json{?status}" ).set ("status" , statusArray (ticketStatus )),
183
186
handleList (Ticket .class , "tickets" ));
184
187
}
185
-
188
+
186
189
public Iterable <Ticket > getTicketsFromSearch (String searchTerm ) {
187
- return new PagedIterable <Ticket >(tmpl ("/search.json{?query}" ).set ("query" , searchTerm +"+type:ticket" ),
190
+ return new PagedIterable <Ticket >(tmpl ("/search.json{?query}" ).set ("query" , searchTerm +"+type:ticket" ),
188
191
handleList (Ticket .class , "results" ));
189
192
}
190
193
@@ -588,7 +591,7 @@ public Iterable<Comment> getRequestComments(long id) {
588
591
return new PagedIterable <Comment >(tmpl ("/requests/{id}/comments.json" ).set ("id" , id ),
589
592
handleList (Comment .class , "comments" ));
590
593
}
591
-
594
+
592
595
public Iterable <Comment > getTicketComments (long id ) {
593
596
return new PagedIterable <Comment >(tmpl ("/tickets/{id}/comments.json" ).set ("id" , id ),
594
597
handleList (Comment .class , "comments" ));
@@ -718,7 +721,160 @@ public void deleteGroup(long id) {
718
721
complete (submit (req ("DELETE" , tmpl ("/groups/{id}.json" ).set ("id" , id )), handleStatus ()));
719
722
}
720
723
721
- public Iterable <SearchResultEntity > getSearchResults (String query ) {
724
+ public Iterable <GroupMembership > getGroupMemberships () {
725
+ return new PagedIterable <GroupMembership >(cnst ("/group_memberships.json" ),
726
+ handleList (GroupMembership .class , "group_memberships" ));
727
+ }
728
+
729
+ public List <GroupMembership > getGroupMembershipByUser (long user_id ) {
730
+ return complete (submit (req ("GET" , tmpl ("/users/{user_id}/group_memberships.json" ).set ("user_id" , user_id )),
731
+ handleList (GroupMembership .class , "group_memberships" )));
732
+ }
733
+
734
+ public List <GroupMembership > getGroupMemberships (long group_id ) {
735
+ return complete (submit (req ("GET" , tmpl ("/groups/{group_id}/memberships.json" ).set ("group_id" , group_id )),
736
+ handleList (GroupMembership .class , "group_memberships" )));
737
+ }
738
+
739
+ public Iterable <GroupMembership > getAssignableGroupMemberships () {
740
+ return new PagedIterable <GroupMembership >(cnst ("/group_memberships/assignable.json" ),
741
+ handleList (GroupMembership .class , "group_memberships" ));
742
+ }
743
+
744
+ public List <GroupMembership > getAssignableGroupMemberships (long group_id ) {
745
+ return complete (submit (req ("GET" ,
746
+ tmpl ("/groups/{group_id}/memberships/assignable.json" ).set ("group_id" , group_id )),
747
+ handleList (GroupMembership .class , "group_memberships" )));
748
+ }
749
+
750
+ public GroupMembership getGroupMembership (long id ) {
751
+ return complete (submit (req ("GET" , tmpl ("/group_memberships/{id}.json" ).set ("id" , id )),
752
+ handle (GroupMembership .class , "group_membership" )));
753
+ }
754
+
755
+ public GroupMembership getGroupMembership (long user_id , long group_membership_id ) {
756
+ return complete (submit (req ("GET" , tmpl ("/users/{uid}/group_memberships/{gmid}.json" ).set ("uid" , user_id )
757
+ .set ("gmid" , group_membership_id )),
758
+ handle (GroupMembership .class , "group_membership" )));
759
+ }
760
+
761
+ public GroupMembership createGroupMembership (GroupMembership groupMembership ) {
762
+ return complete (submit (req ("POST" , cnst ("/group_memberships.json" ), JSON , json (
763
+ Collections .singletonMap ("group_membership" , groupMembership ))),
764
+ handle (GroupMembership .class , "group_membership" )));
765
+ }
766
+
767
+ public GroupMembership createGroupMembership (long user_id , GroupMembership groupMembership ) {
768
+ return complete (submit (req ("POST" , tmpl ("/users/{id}/group_memberships.json" ).set ("id" , user_id ), JSON ,
769
+ json (Collections .singletonMap ("group_membership" , groupMembership ))),
770
+ handle (GroupMembership .class , "group_membership" )));
771
+ }
772
+
773
+ public void deleteGroupMembership (GroupMembership groupMembership ) {
774
+ checkHasId (groupMembership );
775
+ deleteGroupMembership (groupMembership .getId ());
776
+ }
777
+
778
+ public void deleteGroupMembership (long id ) {
779
+ complete (submit (req ("DELETE" , tmpl ("/groups_memberships/{id}.json" ).set ("id" , id )), handleStatus ()));
780
+ }
781
+
782
+ public void deleteGroupMembership (long user_id , GroupMembership groupMembership ) {
783
+ checkHasId (groupMembership );
784
+ deleteGroupMembership (user_id , groupMembership .getId ());
785
+ }
786
+
787
+ public void deleteGroupMembership (long user_id , long group_membership_id ) {
788
+ complete (submit (req ("DELETE" , tmpl ("/users/{uid}/groups_memberships/{gmid}.json" ).set ("uid" , user_id )
789
+ .set ("gmid" , group_membership_id )), handleStatus ()));
790
+ }
791
+
792
+ public List <GroupMembership > setGroupMembershipAsDefault (long user_id , GroupMembership groupMembership ) {
793
+ checkHasId (groupMembership );
794
+ return complete (submit (req ("POST" , tmpl ("/users/{uid}/group_memberships/{gmid}/make_default.json" )
795
+ .set ("uid" , user_id ).set ("gmid" , groupMembership .getId ()), JSON , json (
796
+ Collections .singletonMap ("group_memberships" , groupMembership ))),
797
+ handleList (GroupMembership .class , "results" )));
798
+ }
799
+
800
+ public Iterable <Forum > getForums () {
801
+ return new PagedIterable <Forum >(cnst ("/forums.json" ), handleList (Forum .class , "forums" ));
802
+ }
803
+
804
+ public List <Forum > getForums (long category_id ) {
805
+ return complete (submit (req ("GET" , tmpl ("/categories/{id}/forums.json" ).set ("id" , category_id )),
806
+ handleList (Forum .class , "forums" )));
807
+ }
808
+
809
+ public Forum getForum (long id ) {
810
+ return complete (submit (req ("GET" , tmpl ("/forums/{id}.json" ).set ("id" , id )),
811
+ handle (Forum .class , "forum" )));
812
+ }
813
+
814
+ public Forum createForum (Forum forum ) {
815
+ return complete (submit (req ("POST" , cnst ("/forums.json" ), JSON , json (
816
+ Collections .singletonMap ("forum" , forum ))), handle (Forum .class , "forum" )));
817
+ }
818
+
819
+ public Forum updateForum (Forum forum ) {
820
+ checkHasId (forum );
821
+ return complete (submit (req ("PUT" , tmpl ("/forums/{id}.json" ).set ("id" , forum .getId ()), JSON , json (
822
+ Collections .singletonMap ("forum" , forum ))), handle (Forum .class , "forum" )));
823
+ }
824
+
825
+ public void deleteForum (Forum forum ) {
826
+ checkHasId (forum );
827
+ complete (submit (req ("DELETE" , tmpl ("/forums/{id}.json" ).set ("id" , forum .getId ())), handleStatus ()));
828
+ }
829
+
830
+ public Iterable <Topic > getTopics () {
831
+ return new PagedIterable <Topic >(cnst ("/topics.json" ), handleList (Topic .class , "topics" ));
832
+ }
833
+
834
+ public List <Topic > getTopics (long forum_id ) {
835
+ return complete (submit (req ("GET" , tmpl ("/forums/{id}/topics.json" ).set ("id" , forum_id )),
836
+ handleList (Topic .class , "topics" )));
837
+ }
838
+
839
+ public List <Topic > getTopicsByUser (long user_id ) {
840
+ return complete (submit (req ("GET" , tmpl ("/users/{id}/topics.json" ).set ("id" , user_id )),
841
+ handleList (Topic .class , "topics" )));
842
+ }
843
+
844
+ public Topic getTopic (long id ) {
845
+ return complete (submit (req ("GET" , tmpl ("/topics/{id}.json" ).set ("id" , id )),
846
+ handle (Topic .class , "topic" )));
847
+ }
848
+
849
+ public Topic createTopic (Topic topic ) {
850
+ checkHasId (topic );
851
+ return complete (submit (req ("POST" , cnst ("/topics.json" ), JSON , json (
852
+ Collections .singletonMap ("topic" , topic ))), handle (Topic .class , "topic" )));
853
+ }
854
+
855
+ public Topic importTopic (Topic topic ) {
856
+ checkHasId (topic );
857
+ return complete (submit (req ("POST" , cnst ("/import/topics.json" ), JSON , json (
858
+ Collections .singletonMap ("topic" , topic ))), handle (Topic .class , "topic" )));
859
+ }
860
+
861
+ public List <Topic > getTopics (long id , long ... ids ) {
862
+ return complete (submit (req ("POST" , tmpl ("/topics/show_many.json{?ids}" ).set ("ids" , idArray (id , ids ))),
863
+ handleList (Topic .class , "topics" )));
864
+ }
865
+
866
+ public Topic updateTopic (Topic topic ) {
867
+ checkHasId (topic );
868
+ return complete (submit (req ("PUT" , tmpl ("/topics/{id}.json" ).set ("id" , topic .getId ()), JSON , json (
869
+ Collections .singletonMap ("topic" , topic ))), handle (Topic .class , "topic" )));
870
+ }
871
+
872
+ public void deleteTopic (Topic topic ) {
873
+ checkHasId (topic );
874
+ complete (submit (req ("DELETE" , tmpl ("/topics/{id}.json" ).set ("id" , topic .getId ())), handleStatus ()));
875
+ }
876
+
877
+ public Iterable <SearchResultEntity > getSearchResults (String query ) {
722
878
return new PagedIterable <SearchResultEntity >(tmpl ("/search.json{?query}" ).set ("query" , query ),
723
879
handleSearchList ("results" ));
724
880
}
@@ -1000,6 +1156,24 @@ private static void checkHasId(Group group) {
1000
1156
}
1001
1157
}
1002
1158
1159
+ private static void checkHasId (GroupMembership groupMembership ) {
1160
+ if (groupMembership .getId () == null ) {
1161
+ throw new IllegalArgumentException ("GroupMembership requires id" );
1162
+ }
1163
+ }
1164
+
1165
+ private void checkHasId (Forum forum ) {
1166
+ if (forum .getId () == null ) {
1167
+ throw new IllegalArgumentException ( "Forum requires id" );
1168
+ }
1169
+ }
1170
+
1171
+ private void checkHasId (Topic topic ) {
1172
+ if (topic .getId () == null ) {
1173
+ throw new IllegalArgumentException ( "Topic requires id" );
1174
+ }
1175
+ }
1176
+
1003
1177
private static void checkHasToken (Attachment .Upload upload ) {
1004
1178
if (upload .getToken () == null ) {
1005
1179
throw new IllegalArgumentException ("Upload requires token" );
@@ -1014,7 +1188,7 @@ private static List<Long> idArray(long id, long... ids) {
1014
1188
}
1015
1189
return result ;
1016
1190
}
1017
-
1191
+
1018
1192
private static List <String > statusArray (Status ... statuses )
1019
1193
{
1020
1194
List <String > result = new ArrayList <String >(statuses .length );
0 commit comments