diff --git a/samples/client/wordnik-api/java/pom.xml b/samples/client/wordnik-api/java/pom.xml index 18912577dbf..ebdec7d08e0 100644 --- a/samples/client/wordnik-api/java/pom.xml +++ b/samples/client/wordnik-api/java/pom.xml @@ -14,11 +14,7 @@ 2.2.0 - - org.sonatype.oss - oss-parent - 5 - + @@ -37,30 +33,6 @@ pertest - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - - jar - - - - maven-dependency-plugin @@ -135,6 +107,7 @@ net.alchim31.maven scala-maven-plugin + ${scala-maven-plugin-version} @@ -235,6 +208,7 @@ 1.0.0 4.8.1 1.6.1 + 3.1.5 diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/AccountApi.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/AccountApi.java index 9dba32f04bf..51448d9cfd1 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/AccountApi.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/AccountApi.java @@ -2,9 +2,9 @@ package com.wordnik.client.api; import com.wordnik.client.common.ApiException; import com.wordnik.client.common.ApiInvoker; -import com.wordnik.client.model.ApiTokenStatus; -import com.wordnik.client.model.WordList; import com.wordnik.client.model.User; +import com.wordnik.client.model.WordList; +import com.wordnik.client.model.ApiTokenStatus; import com.wordnik.client.model.AuthenticationToken; import java.util.*; @@ -38,8 +38,10 @@ public class AccountApi { } if(!"null".equals(String.valueOf(password))) queryParams.put("password", String.valueOf(password)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (AuthenticationToken) ApiInvoker.deserialize(response, "", AuthenticationToken.class); } @@ -67,8 +69,10 @@ public class AccountApi { if(username == null || body == null ) { throw new ApiException(400, "missing required params"); } + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); if(response != null){ return (AuthenticationToken) ApiInvoker.deserialize(response, "", AuthenticationToken.class); } @@ -101,8 +105,10 @@ public class AccountApi { if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", WordList.class); } @@ -127,8 +133,10 @@ public class AccountApi { Map headerParams = new HashMap(); headerParams.put("api_key", api_key); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (ApiTokenStatus) ApiInvoker.deserialize(response, "", ApiTokenStatus.class); } @@ -157,8 +165,10 @@ public class AccountApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (User) ApiInvoker.deserialize(response, "", User.class); } diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordApi.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordApi.java index a130de970b7..6d11ad99c7b 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordApi.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordApi.java @@ -2,16 +2,17 @@ package com.wordnik.client.api; import com.wordnik.client.common.ApiException; import com.wordnik.client.common.ApiInvoker; -import com.wordnik.client.model.Definition; -import com.wordnik.client.model.TextPron; -import com.wordnik.client.model.Example; -import com.wordnik.client.model.Syllable; -import com.wordnik.client.model.AudioFile; -import com.wordnik.client.model.ExampleSearchResults; -import com.wordnik.client.model.WordObject; -import com.wordnik.client.model.Bigram; -import com.wordnik.client.model.Related; import com.wordnik.client.model.FrequencySummary; +import com.wordnik.client.model.Bigram; +import com.wordnik.client.model.WordObject; +import com.wordnik.client.model.ExampleSearchResults; +import com.wordnik.client.model.Example; +import com.wordnik.client.model.ScrabbleScoreResult; +import com.wordnik.client.model.TextPron; +import com.wordnik.client.model.Syllable; +import com.wordnik.client.model.Related; +import com.wordnik.client.model.Definition; +import com.wordnik.client.model.AudioFile; import java.util.*; public class WordApi { @@ -50,8 +51,10 @@ public class WordApi { queryParams.put("skip", String.valueOf(skip)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (ExampleSearchResults) ApiInvoker.deserialize(response, "", ExampleSearchResults.class); } @@ -83,8 +86,10 @@ public class WordApi { queryParams.put("useCanonical", String.valueOf(useCanonical)); if(!"null".equals(String.valueOf(includeSuggestions))) queryParams.put("includeSuggestions", String.valueOf(includeSuggestions)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (WordObject) ApiInvoker.deserialize(response, "", WordObject.class); } @@ -124,8 +129,10 @@ public class WordApi { queryParams.put("useCanonical", String.valueOf(useCanonical)); if(!"null".equals(String.valueOf(includeTags))) queryParams.put("includeTags", String.valueOf(includeTags)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", Definition.class); } @@ -155,8 +162,10 @@ public class WordApi { } if(!"null".equals(String.valueOf(useCanonical))) queryParams.put("useCanonical", String.valueOf(useCanonical)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (Example) ApiInvoker.deserialize(response, "", Example.class); } @@ -190,8 +199,10 @@ public class WordApi { queryParams.put("relationshipTypes", String.valueOf(relationshipTypes)); if(!"null".equals(String.valueOf(limitPerRelationshipType))) queryParams.put("limitPerRelationshipType", String.valueOf(limitPerRelationshipType)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", Related.class); } @@ -227,8 +238,10 @@ public class WordApi { queryParams.put("typeFormat", String.valueOf(typeFormat)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", TextPron.class); } @@ -262,8 +275,10 @@ public class WordApi { queryParams.put("sourceDictionary", String.valueOf(sourceDictionary)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", Syllable.class); } @@ -297,8 +312,10 @@ public class WordApi { queryParams.put("startYear", String.valueOf(startYear)); if(!"null".equals(String.valueOf(endYear))) queryParams.put("endYear", String.valueOf(endYear)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (FrequencySummary) ApiInvoker.deserialize(response, "", FrequencySummary.class); } @@ -332,8 +349,10 @@ public class WordApi { queryParams.put("wlmi", String.valueOf(wlmi)); if(!"null".equals(String.valueOf(useCanonical))) queryParams.put("useCanonical", String.valueOf(useCanonical)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", Bigram.class); } @@ -363,8 +382,10 @@ public class WordApi { } if(!"null".equals(String.valueOf(useCanonical))) queryParams.put("useCanonical", String.valueOf(useCanonical)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", String.class); } @@ -396,8 +417,10 @@ public class WordApi { queryParams.put("useCanonical", String.valueOf(useCanonical)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", AudioFile.class); } @@ -413,5 +436,36 @@ public class WordApi { } } } + public ScrabbleScoreResult getScrabbleScore (String word) throws ApiException { + // create path and map variables + String path = "/word.{format}/{word}/scrabbleScore".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}", apiInvoker.escapeString(word.toString())); + + // query params + Map queryParams = new HashMap(); + Map headerParams = new HashMap(); + + // verify required params are set + if(word == null ) { + throw new ApiException(400, "missing required params"); + } + String contentType = "application/json"; + + try { + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); + if(response != null){ + return (ScrabbleScoreResult) ApiInvoker.deserialize(response, "", ScrabbleScoreResult.class); + } + else { + return null; + } + } catch (ApiException ex) { + if(ex.getCode() == 404) { + return null; + } + else { + throw ex; + } + } + } } diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListApi.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListApi.java index 78c160ee7da..b75aa46004c 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListApi.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListApi.java @@ -2,9 +2,9 @@ package com.wordnik.client.api; import com.wordnik.client.common.ApiException; import com.wordnik.client.common.ApiInvoker; +import com.wordnik.client.model.WordListWord; import com.wordnik.client.model.WordList; import com.wordnik.client.model.StringValue; -import com.wordnik.client.model.WordListWord; import java.util.*; public class WordListApi { @@ -36,8 +36,10 @@ public class WordListApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "PUT", queryParams, body, headerParams, contentType); if(response != null){ return ; } @@ -66,8 +68,10 @@ public class WordListApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "DELETE", queryParams, null, headerParams, contentType); if(response != null){ return ; } @@ -96,8 +100,10 @@ public class WordListApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (WordList) ApiInvoker.deserialize(response, "", WordList.class); } @@ -126,8 +132,10 @@ public class WordListApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); if(response != null){ return ; } @@ -164,8 +172,10 @@ public class WordListApi { if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", WordListWord.class); } @@ -194,8 +204,10 @@ public class WordListApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); if(response != null){ return ; } diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListsApi.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListsApi.java index b7544882efd..c8d669e48d3 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListsApi.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordListsApi.java @@ -34,8 +34,10 @@ public class WordListsApi { throw new ApiException(400, "missing required params"); } headerParams.put("auth_token", auth_token); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "POST", queryParams, body, headerParams, contentType); if(response != null){ return (WordList) ApiInvoker.deserialize(response, "", WordList.class); } diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordsApi.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordsApi.java index 478e07bca37..a543bf2c70a 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordsApi.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/api/WordsApi.java @@ -2,8 +2,8 @@ package com.wordnik.client.api; import com.wordnik.client.common.ApiException; import com.wordnik.client.common.ApiInvoker; -import com.wordnik.client.model.WordObject; import com.wordnik.client.model.DefinitionSearchResults; +import com.wordnik.client.model.WordObject; import com.wordnik.client.model.WordOfTheDay; import com.wordnik.client.model.WordSearchResults; import java.util.*; @@ -58,8 +58,10 @@ public class WordsApi { queryParams.put("skip", String.valueOf(skip)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (WordSearchResults) ApiInvoker.deserialize(response, "", WordSearchResults.class); } @@ -85,8 +87,10 @@ public class WordsApi { if(!"null".equals(String.valueOf(date))) queryParams.put("date", String.valueOf(date)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (WordOfTheDay) ApiInvoker.deserialize(response, "", WordOfTheDay.class); } @@ -146,8 +150,10 @@ public class WordsApi { queryParams.put("skip", String.valueOf(skip)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (DefinitionSearchResults) ApiInvoker.deserialize(response, "", DefinitionSearchResults.class); } @@ -195,8 +201,10 @@ public class WordsApi { queryParams.put("sortOrder", String.valueOf(sortOrder)); if(!"null".equals(String.valueOf(limit))) queryParams.put("limit", String.valueOf(limit)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (List) ApiInvoker.deserialize(response, "List", WordObject.class); } @@ -238,8 +246,10 @@ public class WordsApi { queryParams.put("minLength", String.valueOf(minLength)); if(!"null".equals(String.valueOf(maxLength))) queryParams.put("maxLength", String.valueOf(maxLength)); + String contentType = "application/json"; + try { - String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams); + String response = apiInvoker.invokeAPI(basePath, path, "GET", queryParams, null, headerParams, contentType); if(response != null){ return (WordObject) ApiInvoker.deserialize(response, "", WordObject.class); } diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/common/ApiInvoker.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/common/ApiInvoker.java index d07eb075db6..8344a2ab37f 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/common/ApiInvoker.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/common/ApiInvoker.java @@ -44,9 +44,8 @@ public class ApiInvoker { return response; } else if(String.class.equals(cls)) { - if(json != null && json.startsWith("\"") && json.endsWith("\"") && json.length() > 1) { + if(json != null && json.startsWith("\"") && json.endsWith("\"") && json.length() > 1) return json.substring(1, json.length() - 2); - } else return json; } @@ -61,15 +60,17 @@ public class ApiInvoker { public static String serialize(Object obj) throws ApiException { try { - if (obj != null) return JsonUtil.getJsonMapper().writeValueAsString(obj); - else return null; + if (obj != null) + return JsonUtil.getJsonMapper().writeValueAsString(obj); + else + return null; } catch (Exception e) { throw new ApiException(500, e.getMessage()); } } - public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams) throws ApiException { + public String invokeAPI(String host, String path, String method, Map queryParams, Object body, Map headerParams, String contentType) throws ApiException { Client client = getClient(host); StringBuilder b = new StringBuilder(); @@ -77,14 +78,16 @@ public class ApiInvoker { for(String key : queryParams.keySet()) { String value = queryParams.get(key); if (value != null){ - if(b.toString().length() == 0) b.append("?"); - else b.append("&"); + if(b.toString().length() == 0) + b.append("?"); + else + b.append("&"); b.append(escapeString(key)).append("=").append(escapeString(value)); } } String querystring = b.toString(); - Builder builder = client.resource(host + path + querystring).type("application/json"); + Builder builder = client.resource(host + path + querystring).accept("application/json"); for(String key : headerParams.keySet()) { builder.header(key, headerParams.get(key)); } @@ -100,13 +103,22 @@ public class ApiInvoker { response = (ClientResponse) builder.get(ClientResponse.class); } else if ("POST".equals(method)) { + if(body == null) response = builder.post(ClientResponse.class, serialize(body)); + else + response = builder.type("application/json").post(ClientResponse.class, serialize(body)); } else if ("PUT".equals(method)) { - response = builder.put(ClientResponse.class, serialize(body)); - } + if(body == null) + response = builder.put(ClientResponse.class, serialize(body)); + else + response = builder.type("application/json").put(ClientResponse.class, serialize(body)); + } else if ("DELETE".equals(method)) { + if(body == null) response = builder.delete(ClientResponse.class, serialize(body)); + else + response = builder.type("application/json").delete(ClientResponse.class, serialize(body)); } else { throw new ApiException(500, "unknown method type " + method); @@ -122,12 +134,12 @@ public class ApiInvoker { } private Client getClient(String host) { - if(!hostMap.containsKey(host)) { - Client client = Client.create(); - client.addFilter(new LoggingFilter()); - hostMap.put(host, client); - } - return hostMap.get(host); + if(!hostMap.containsKey(host)) { + Client client = Client.create(); + client.addFilter(new LoggingFilter()); + hostMap.put(host, client); + } + return hostMap.get(host); } } diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Definition.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Definition.java index f4c2d9b4d69..42b728893f2 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Definition.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Definition.java @@ -1,12 +1,12 @@ package com.wordnik.client.model; import java.util.*; -import com.wordnik.client.model.ExampleUsage; -import com.wordnik.client.model.Note; -import com.wordnik.client.model.Citation; -import com.wordnik.client.model.TextPron; import com.wordnik.client.model.Label; +import com.wordnik.client.model.ExampleUsage; +import com.wordnik.client.model.TextPron; +import com.wordnik.client.model.Citation; import com.wordnik.client.model.Related; +import com.wordnik.client.model.Note; public class Definition { private String extendedText = null; private String text = null; diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Example.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Example.java index 58f09de0172..3f0e59b043e 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Example.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/Example.java @@ -1,8 +1,8 @@ package com.wordnik.client.model; import com.wordnik.client.model.Sentence; -import com.wordnik.client.model.ScoredWord; import com.wordnik.client.model.ContentProvider; +import com.wordnik.client.model.ScoredWord; public class Example { private Long id = null; private Long exampleId = null; diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/ScrabbleScoreResult.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/ScrabbleScoreResult.java new file mode 100644 index 00000000000..71086647e59 --- /dev/null +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/ScrabbleScoreResult.java @@ -0,0 +1,21 @@ +package com.wordnik.client.model; + +public class ScrabbleScoreResult { + private Integer value = null; + public Integer getValue() { + return value; + } + public void setValue(Integer value) { + this.value = value; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class ScrabbleScoreResult {\n"); + sb.append(" value: ").append(value).append("\n"); + sb.append("}\n"); + return sb.toString(); + } +} + diff --git a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/WordOfTheDay.java b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/WordOfTheDay.java index 70f67fd3f87..9027c6cb0e0 100644 --- a/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/WordOfTheDay.java +++ b/samples/client/wordnik-api/java/src/main/java/com/wordnik/client/model/WordOfTheDay.java @@ -2,8 +2,8 @@ package com.wordnik.client.model; import java.util.Date; import java.util.*; -import com.wordnik.client.model.SimpleDefinition; import com.wordnik.client.model.SimpleExample; +import com.wordnik.client.model.SimpleDefinition; import com.wordnik.client.model.ContentProvider; public class WordOfTheDay { private Long id = null; diff --git a/samples/client/wordnik-api/scala/pom.xml b/samples/client/wordnik-api/scala/pom.xml index 9981cc63fe7..68162889d15 100644 --- a/samples/client/wordnik-api/scala/pom.xml +++ b/samples/client/wordnik-api/scala/pom.xml @@ -5,16 +5,12 @@ swagger-client jar swagger-client - 1.0.0 + 1.0 2.2.0 + - - scala-tools.org - Scala-Tools Maven2 Repository - http://scala-tools.org/repo-releases - maven-mongodb-plugin-repo maven mongodb plugin repository @@ -113,9 +109,9 @@ - org.scala-tools - maven-scala-plugin - 2.15.2 + net.alchim31.maven + scala-maven-plugin + ${scala-maven-plugin-version} scala-compile-first @@ -160,6 +156,12 @@ ${jersey-version} compile + + com.sun.jersey.contribs + jersey-multipart + ${jersey-version} + compile + org.scala-lang scala-library @@ -194,5 +196,7 @@ 1.6.1 4.8.1 1.6.1 + 3.1.5 + diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/AccountApi.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/AccountApi.scala index eb041156311..a5dd0901880 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/AccountApi.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/AccountApi.scala @@ -1,11 +1,15 @@ package com.wordnik.client.api -import com.wordnik.client.model.ApiTokenStatus -import com.wordnik.client.model.WordList import com.wordnik.client.model.User +import com.wordnik.client.model.WordList +import com.wordnik.client.model.ApiTokenStatus import com.wordnik.client.model.AuthenticationToken import com.wordnik.client.common.ApiInvoker import com.wordnik.client.common.ApiException + +import java.io.File +import java.util.Date + import scala.collection.mutable.HashMap class AccountApi { @@ -16,20 +20,24 @@ class AccountApi { def authenticate (username: String, password: String) : Option[AuthenticationToken]= { // create path and map variables - val path = "/account.{format}/authenticate/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}",apiInvoker.escapeString(username)) + val path = "/account.{format}/authenticate/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}",apiInvoker.escape(username)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(username, password) - null).size match { + (List(username, password).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } if(String.valueOf(password) != "null") queryParams += "password" -> password.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[AuthenticationToken]).asInstanceOf[AuthenticationToken]) case _ => None @@ -41,19 +49,26 @@ class AccountApi { } def authenticatePost (username: String, body: String) : Option[AuthenticationToken]= { // create path and map variables - val path = "/account.{format}/authenticate/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}",apiInvoker.escapeString(username)) + val path = "/account.{format}/authenticate/{username}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "username" + "\\}",apiInvoker.escape(username)) + + + val contentType = { + if(body != null && body.isInstanceOf[File] ) + "multipart/form-data" + else "application/json" + } // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(username, body) - null).size match { + (List(username, body).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } try { - apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[AuthenticationToken]).asInstanceOf[AuthenticationToken]) case _ => None @@ -65,12 +80,16 @@ class AccountApi { } def getWordListsForLoggedInUser (auth_token: String, skip: Int= 0, limit: Int= 50) : Option[List[WordList]]= { // create path and map variables - val path = "/account.{format}/wordLists".replaceAll("\\{format\\}","json")// query params + val path = "/account.{format}/wordLists".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(auth_token) - null).size match { + (List(auth_token).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -78,7 +97,7 @@ class AccountApi { if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[WordList]).asInstanceOf[List[WordList]]) case _ => None @@ -90,13 +109,17 @@ class AccountApi { } def getApiTokenStatus (api_key: String) : Option[ApiTokenStatus]= { // create path and map variables - val path = "/account.{format}/apiTokenStatus".replaceAll("\\{format\\}","json")// query params + val path = "/account.{format}/apiTokenStatus".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] headerParams += "api_key" -> api_key try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[ApiTokenStatus]).asInstanceOf[ApiTokenStatus]) case _ => None @@ -108,18 +131,22 @@ class AccountApi { } def getLoggedInUser (auth_token: String) : Option[User]= { // create path and map variables - val path = "/account.{format}/user".replaceAll("\\{format\\}","json")// query params + val path = "/account.{format}/user".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(auth_token) - null).size match { + (List(auth_token).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[User]).asInstanceOf[User]) case _ => None diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordApi.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordApi.scala index 15add3527d7..cab9db7e07a 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordApi.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordApi.scala @@ -1,17 +1,22 @@ package com.wordnik.client.api -import com.wordnik.client.model.Definition -import com.wordnik.client.model.TextPron -import com.wordnik.client.model.Example -import com.wordnik.client.model.Syllable -import com.wordnik.client.model.AudioFile -import com.wordnik.client.model.ExampleSearchResults -import com.wordnik.client.model.WordObject -import com.wordnik.client.model.Bigram -import com.wordnik.client.model.Related import com.wordnik.client.model.FrequencySummary +import com.wordnik.client.model.Bigram +import com.wordnik.client.model.WordObject +import com.wordnik.client.model.ExampleSearchResults +import com.wordnik.client.model.Example +import com.wordnik.client.model.ScrabbleScoreResult +import com.wordnik.client.model.TextPron +import com.wordnik.client.model.Syllable +import com.wordnik.client.model.Related +import com.wordnik.client.model.Definition +import com.wordnik.client.model.AudioFile import com.wordnik.client.common.ApiInvoker import com.wordnik.client.common.ApiException + +import java.io.File +import java.util.Date + import scala.collection.mutable.HashMap class WordApi { @@ -22,14 +27,18 @@ class WordApi { def getExamples (word: String, includeDuplicates: String= "false", useCanonical: String= "false", skip: Int= 0, limit: Int= 5) : Option[ExampleSearchResults]= { // create path and map variables - val path = "/word.{format}/{word}/examples".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/examples".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -38,7 +47,7 @@ class WordApi { if(String.valueOf(skip) != "null") queryParams += "skip" -> skip.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[ExampleSearchResults]).asInstanceOf[ExampleSearchResults]) case _ => None @@ -50,21 +59,25 @@ class WordApi { } def getWord (word: String, useCanonical: String= "false", includeSuggestions: String= "true") : Option[WordObject]= { // create path and map variables - val path = "/word.{format}/{word}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } if(String.valueOf(useCanonical) != "null") queryParams += "useCanonical" -> useCanonical.toString if(String.valueOf(includeSuggestions) != "null") queryParams += "includeSuggestions" -> includeSuggestions.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[WordObject]).asInstanceOf[WordObject]) case _ => None @@ -76,14 +89,18 @@ class WordApi { } def getDefinitions (word: String, partOfSpeech: String, sourceDictionaries: String, limit: Int= 200, includeRelated: String= "false", useCanonical: String= "false", includeTags: String= "false") : Option[List[Definition]]= { // create path and map variables - val path = "/word.{format}/{word}/definitions".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/definitions".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -94,7 +111,7 @@ class WordApi { if(String.valueOf(useCanonical) != "null") queryParams += "useCanonical" -> useCanonical.toString if(String.valueOf(includeTags) != "null") queryParams += "includeTags" -> includeTags.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[Definition]).asInstanceOf[List[Definition]]) case _ => None @@ -106,20 +123,24 @@ class WordApi { } def getTopExample (word: String, useCanonical: String= "false") : Option[Example]= { // create path and map variables - val path = "/word.{format}/{word}/topExample".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/topExample".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } if(String.valueOf(useCanonical) != "null") queryParams += "useCanonical" -> useCanonical.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[Example]).asInstanceOf[Example]) case _ => None @@ -131,14 +152,18 @@ class WordApi { } def getRelatedWords (word: String, relationshipTypes: String, useCanonical: String= "false", limitPerRelationshipType: Int= 10) : Option[List[Related]]= { // create path and map variables - val path = "/word.{format}/{word}/relatedWords".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/relatedWords".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -146,7 +171,7 @@ class WordApi { if(String.valueOf(relationshipTypes) != "null") queryParams += "relationshipTypes" -> relationshipTypes.toString if(String.valueOf(limitPerRelationshipType) != "null") queryParams += "limitPerRelationshipType" -> limitPerRelationshipType.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[Related]).asInstanceOf[List[Related]]) case _ => None @@ -158,14 +183,18 @@ class WordApi { } def getTextPronunciations (word: String, sourceDictionary: String, typeFormat: String, useCanonical: String= "false", limit: Int= 50) : Option[List[TextPron]]= { // create path and map variables - val path = "/word.{format}/{word}/pronunciations".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/pronunciations".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -174,7 +203,7 @@ class WordApi { if(String.valueOf(typeFormat) != "null") queryParams += "typeFormat" -> typeFormat.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[TextPron]).asInstanceOf[List[TextPron]]) case _ => None @@ -186,14 +215,18 @@ class WordApi { } def getHyphenation (word: String, sourceDictionary: String, useCanonical: String= "false", limit: Int= 50) : Option[List[Syllable]]= { // create path and map variables - val path = "/word.{format}/{word}/hyphenation".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/hyphenation".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -201,7 +234,7 @@ class WordApi { if(String.valueOf(sourceDictionary) != "null") queryParams += "sourceDictionary" -> sourceDictionary.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[Syllable]).asInstanceOf[List[Syllable]]) case _ => None @@ -213,14 +246,18 @@ class WordApi { } def getWordFrequency (word: String, useCanonical: String= "false", startYear: Int= 1800, endYear: Int= 2012) : Option[FrequencySummary]= { // create path and map variables - val path = "/word.{format}/{word}/frequency".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/frequency".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -228,7 +265,7 @@ class WordApi { if(String.valueOf(startYear) != "null") queryParams += "startYear" -> startYear.toString if(String.valueOf(endYear) != "null") queryParams += "endYear" -> endYear.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[FrequencySummary]).asInstanceOf[FrequencySummary]) case _ => None @@ -240,14 +277,18 @@ class WordApi { } def getPhrases (word: String, limit: Int= 5, wlmi: Int= 0, useCanonical: String= "false") : Option[List[Bigram]]= { // create path and map variables - val path = "/word.{format}/{word}/phrases".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/phrases".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -255,7 +296,7 @@ class WordApi { if(String.valueOf(wlmi) != "null") queryParams += "wlmi" -> wlmi.toString if(String.valueOf(useCanonical) != "null") queryParams += "useCanonical" -> useCanonical.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[Bigram]).asInstanceOf[List[Bigram]]) case _ => None @@ -267,20 +308,24 @@ class WordApi { } def getEtymologies (word: String, useCanonical: String) : Option[List[String]]= { // create path and map variables - val path = "/word.{format}/{word}/etymologies".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/etymologies".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } if(String.valueOf(useCanonical) != "null") queryParams += "useCanonical" -> useCanonical.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[String]).asInstanceOf[List[String]]) case _ => None @@ -292,21 +337,25 @@ class WordApi { } def getAudio (word: String, useCanonical: String= "false", limit: Int= 50) : Option[List[AudioFile]]= { // create path and map variables - val path = "/word.{format}/{word}/audio".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escapeString(word)) + val path = "/word.{format}/{word}/audio".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(word) - null).size match { + (List(word).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } if(String.valueOf(useCanonical) != "null") queryParams += "useCanonical" -> useCanonical.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[AudioFile]).asInstanceOf[List[AudioFile]]) case _ => None @@ -316,5 +365,33 @@ class WordApi { case ex: ApiException => throw ex } } + def getScrabbleScore (word: String) : Option[ScrabbleScoreResult]= { + // create path and map variables + val path = "/word.{format}/{word}/scrabbleScore".replaceAll("\\{format\\}","json").replaceAll("\\{" + "word" + "\\}",apiInvoker.escape(word)) + + + val contentType = { + "application/json"} + + // query params + val queryParams = new HashMap[String, String] + val headerParams = new HashMap[String, String] + + // verify required params are set + (List(word).filter(_ != null)).size match { + case 1 => // all required values set + case _ => throw new Exception("missing required params") + } + try { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { + case s: String => + Some(ApiInvoker.deserialize(s, "", classOf[ScrabbleScoreResult]).asInstanceOf[ScrabbleScoreResult]) + case _ => None + } + } catch { + case ex: ApiException if ex.code == 404 => None + case ex: ApiException => throw ex + } + } } diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListApi.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListApi.scala index 5ab720ae1aa..bc4124f6c2a 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListApi.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListApi.scala @@ -1,10 +1,14 @@ package com.wordnik.client.api +import com.wordnik.client.model.WordListWord import com.wordnik.client.model.WordList import com.wordnik.client.model.StringValue -import com.wordnik.client.model.WordListWord import com.wordnik.client.common.ApiInvoker import com.wordnik.client.common.ApiException + +import java.io.File +import java.util.Date + import scala.collection.mutable.HashMap class WordListApi { @@ -15,20 +19,27 @@ class WordListApi { def updateWordList (permalink: String, body: WordList, auth_token: String) = { // create path and map variables - val path = "/wordList.{format}/{permalink}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escapeString(permalink)) + val path = "/wordList.{format}/{permalink}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escape(permalink)) + + + val contentType = { + if(body != null && body.isInstanceOf[File] ) + "multipart/form-data" + else "application/json" + } // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(permalink, auth_token) - null).size match { + (List(permalink, auth_token).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "PUT", queryParams.toMap, body, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "PUT", queryParams.toMap, body, headerParams.toMap, contentType) match { case s: String => case _ => None } @@ -39,20 +50,24 @@ class WordListApi { } def deleteWordList (permalink: String, auth_token: String) = { // create path and map variables - val path = "/wordList.{format}/{permalink}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escapeString(permalink)) + val path = "/wordList.{format}/{permalink}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escape(permalink)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(permalink, auth_token) - null).size match { + (List(permalink, auth_token).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "DELETE", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "DELETE", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => case _ => None } @@ -63,20 +78,24 @@ class WordListApi { } def getWordListByPermalink (permalink: String, auth_token: String) : Option[WordList]= { // create path and map variables - val path = "/wordList.{format}/{permalink}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escapeString(permalink)) + val path = "/wordList.{format}/{permalink}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escape(permalink)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(permalink, auth_token) - null).size match { + (List(permalink, auth_token).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[WordList]).asInstanceOf[WordList]) case _ => None @@ -86,22 +105,29 @@ class WordListApi { case ex: ApiException => throw ex } } - def addWordsToWordList (permalink: String, body: Array[StringValue], auth_token: String) = { + def addWordsToWordList (permalink: String, body: List[StringValue], auth_token: String) = { // create path and map variables - val path = "/wordList.{format}/{permalink}/words".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escapeString(permalink)) + val path = "/wordList.{format}/{permalink}/words".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escape(permalink)) + + + val contentType = { + if(body != null && body.isInstanceOf[File] ) + "multipart/form-data" + else "application/json" + } // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(permalink, auth_token) - null).size match { + (List(permalink, auth_token).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap, contentType) match { case s: String => case _ => None } @@ -112,14 +138,18 @@ class WordListApi { } def getWordListWords (permalink: String, auth_token: String, sortBy: String= "createDate", sortOrder: String= "desc", skip: Int= 0, limit: Int= 100) : Option[List[WordListWord]]= { // create path and map variables - val path = "/wordList.{format}/{permalink}/words".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escapeString(permalink)) + val path = "/wordList.{format}/{permalink}/words".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escape(permalink)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(permalink, auth_token) - null).size match { + (List(permalink, auth_token).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } @@ -129,7 +159,7 @@ class WordListApi { if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[WordListWord]).asInstanceOf[List[WordListWord]]) case _ => None @@ -139,22 +169,29 @@ class WordListApi { case ex: ApiException => throw ex } } - def deleteWordsFromWordList (permalink: String, body: Array[StringValue], auth_token: String) = { + def deleteWordsFromWordList (permalink: String, body: List[StringValue], auth_token: String) = { // create path and map variables - val path = "/wordList.{format}/{permalink}/deleteWords".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escapeString(permalink)) + val path = "/wordList.{format}/{permalink}/deleteWords".replaceAll("\\{format\\}","json").replaceAll("\\{" + "permalink" + "\\}",apiInvoker.escape(permalink)) + + + val contentType = { + if(body != null && body.isInstanceOf[File] ) + "multipart/form-data" + else "application/json" + } // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(permalink, auth_token) - null).size match { + (List(permalink, auth_token).filter(_ != null)).size match { case 2 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap, contentType) match { case s: String => case _ => None } diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListsApi.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListsApi.scala index 8a3236c59f4..cd854997b61 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListsApi.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordListsApi.scala @@ -3,6 +3,10 @@ package com.wordnik.client.api import com.wordnik.client.model.WordList import com.wordnik.client.common.ApiInvoker import com.wordnik.client.common.ApiException + +import java.io.File +import java.util.Date + import scala.collection.mutable.HashMap class WordListsApi { @@ -13,18 +17,25 @@ class WordListsApi { def createWordList (body: WordList, auth_token: String) : Option[WordList]= { // create path and map variables - val path = "/wordLists.{format}".replaceAll("\\{format\\}","json")// query params + val path = "/wordLists.{format}".replaceAll("\\{format\\}","json") + val contentType = { + if(body != null && body.isInstanceOf[File] ) + "multipart/form-data" + else "application/json" + } + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(auth_token) - null).size match { + (List(auth_token).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } headerParams += "auth_token" -> auth_token try { - apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "POST", queryParams.toMap, body, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[WordList]).asInstanceOf[WordList]) case _ => None diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordsApi.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordsApi.scala index 3e748fbee2f..a5b96d4f3f2 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordsApi.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/api/WordsApi.scala @@ -1,11 +1,15 @@ package com.wordnik.client.api -import com.wordnik.client.model.WordObject import com.wordnik.client.model.DefinitionSearchResults +import com.wordnik.client.model.WordObject import com.wordnik.client.model.WordOfTheDay import com.wordnik.client.model.WordSearchResults import com.wordnik.client.common.ApiInvoker import com.wordnik.client.common.ApiException + +import java.io.File +import java.util.Date + import scala.collection.mutable.HashMap class WordsApi { @@ -16,14 +20,18 @@ class WordsApi { def searchWords (query: String, includePartOfSpeech: String, excludePartOfSpeech: String, caseSensitive: String= "true", minCorpusCount: Int= 5, maxCorpusCount: Int= -1, minDictionaryCount: Int= 1, maxDictionaryCount: Int= -1, minLength: Int= 1, maxLength: Int= -1, skip: Int= 0, limit: Int= 10) : Option[WordSearchResults]= { // create path and map variables - val path = "/words.{format}/search/{query}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "query" + "\\}",apiInvoker.escapeString(query)) + val path = "/words.{format}/search/{query}".replaceAll("\\{format\\}","json").replaceAll("\\{" + "query" + "\\}",apiInvoker.escape(query)) + + + val contentType = { + "application/json"} // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(query) - null).size match { + (List(query).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -39,7 +47,7 @@ class WordsApi { if(String.valueOf(skip) != "null") queryParams += "skip" -> skip.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[WordSearchResults]).asInstanceOf[WordSearchResults]) case _ => None @@ -51,13 +59,17 @@ class WordsApi { } def getWordOfTheDay (date: String) : Option[WordOfTheDay]= { // create path and map variables - val path = "/words.{format}/wordOfTheDay".replaceAll("\\{format\\}","json")// query params + val path = "/words.{format}/wordOfTheDay".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] if(String.valueOf(date) != "null") queryParams += "date" -> date.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[WordOfTheDay]).asInstanceOf[WordOfTheDay]) case _ => None @@ -69,12 +81,16 @@ class WordsApi { } def reverseDictionary (query: String, findSenseForWord: String, includeSourceDictionaries: String, excludeSourceDictionaries: String, includePartOfSpeech: String, excludePartOfSpeech: String, expandTerms: String, sortBy: String, sortOrder: String, minCorpusCount: Int= 5, maxCorpusCount: Int= -1, minLength: Int= 1, maxLength: Int= -1, includeTags: String= "false", skip: String= "0", limit: Int= 10) : Option[DefinitionSearchResults]= { // create path and map variables - val path = "/words.{format}/reverseDictionary".replaceAll("\\{format\\}","json")// query params + val path = "/words.{format}/reverseDictionary".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] // verify required params are set - (Set(query) - null).size match { + (List(query).filter(_ != null)).size match { case 1 => // all required values set case _ => throw new Exception("missing required params") } @@ -95,7 +111,7 @@ class WordsApi { if(String.valueOf(skip) != "null") queryParams += "skip" -> skip.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[DefinitionSearchResults]).asInstanceOf[DefinitionSearchResults]) case _ => None @@ -107,7 +123,11 @@ class WordsApi { } def getRandomWords (includePartOfSpeech: String, excludePartOfSpeech: String, sortBy: String, sortOrder: String, hasDictionaryDef: String= "true", minCorpusCount: Int= 0, maxCorpusCount: Int= -1, minDictionaryCount: Int= 1, maxDictionaryCount: Int= -1, minLength: Int= 5, maxLength: Int= -1, limit: Int= 10) : Option[List[WordObject]]= { // create path and map variables - val path = "/words.{format}/randomWords".replaceAll("\\{format\\}","json")// query params + val path = "/words.{format}/randomWords".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] @@ -124,7 +144,7 @@ class WordsApi { if(String.valueOf(sortOrder) != "null") queryParams += "sortOrder" -> sortOrder.toString if(String.valueOf(limit) != "null") queryParams += "limit" -> limit.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "List", classOf[WordObject]).asInstanceOf[List[WordObject]]) case _ => None @@ -136,7 +156,11 @@ class WordsApi { } def getRandomWord (includePartOfSpeech: String, excludePartOfSpeech: String, hasDictionaryDef: String= "true", minCorpusCount: Int= 0, maxCorpusCount: Int= -1, minDictionaryCount: Int= 1, maxDictionaryCount: Int= -1, minLength: Int= 5, maxLength: Int= -1) : Option[WordObject]= { // create path and map variables - val path = "/words.{format}/randomWord".replaceAll("\\{format\\}","json")// query params + val path = "/words.{format}/randomWord".replaceAll("\\{format\\}","json") + val contentType = { + "application/json"} + + // query params val queryParams = new HashMap[String, String] val headerParams = new HashMap[String, String] @@ -150,7 +174,7 @@ class WordsApi { if(String.valueOf(minLength) != "null") queryParams += "minLength" -> minLength.toString if(String.valueOf(maxLength) != "null") queryParams += "maxLength" -> maxLength.toString try { - apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap) match { + apiInvoker.invokeApi(basePath, path, "GET", queryParams.toMap, None, headerParams.toMap, contentType) match { case s: String => Some(ApiInvoker.deserialize(s, "", classOf[WordObject]).asInstanceOf[WordObject]) case _ => None diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/common/ApiInvoker.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/common/ApiInvoker.scala index 1da17e02c94..794070ae89c 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/common/ApiInvoker.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/common/ApiInvoker.scala @@ -6,6 +6,10 @@ import com.sun.jersey.api.client.config.ClientConfig import com.sun.jersey.api.client.config.DefaultClientConfig import com.sun.jersey.api.client.filter.LoggingFilter +import com.sun.jersey.multipart.FormDataMultiPart +import com.sun.jersey.multipart.file.FileDataBodyPart + +import java.io.File import java.net.URLEncoder import javax.ws.rs.core.MediaType @@ -36,12 +40,16 @@ object ApiInvoker { val defaultHeaders: HashMap[String, String] = HashMap() val hostMap: HashMap[String, Client] = HashMap() - def escapeString(value: String): String = { + def escape(value: String): String = { URLEncoder.encode(value, "utf-8").replaceAll("\\+", "%20") } + def escape(value: Long): String = value.toString + def escape(value: Double): String = value.toString + def escape(value: Float): String = value.toString + def deserialize(json: String, containerType: String, cls: Class[_]) = { - if (cls == classOf[String] && containerType == null) { + if (cls == classOf[String]) { json match { case s: String => { if (s.startsWith("\"") && s.endsWith("\"") && s.length > 1) s.substring(1, s.length - 2) @@ -50,8 +58,13 @@ object ApiInvoker { case _ => null } } else { - containerType match { - case "List" => { + containerType.toLowerCase match { + case "array" => { + val typeInfo = mapper.getTypeFactory().constructCollectionType(classOf[java.util.List[_]], cls) + val response = mapper.readValue(json, typeInfo).asInstanceOf[java.util.List[_]] + response.asScala.toList + } + case "list" => { val typeInfo = mapper.getTypeFactory().constructCollectionType(classOf[java.util.List[_]], cls) val response = mapper.readValue(json, typeInfo).asInstanceOf[java.util.List[_]] response.asScala.toList @@ -75,12 +88,11 @@ object ApiInvoker { } else null } - def invokeApi(host: String, path: String, method: String, queryParams: Map[String, String], body: AnyRef, headerParams: Map[String, String]) = { + def invokeApi(host: String, path: String, method: String, queryParams: Map[String, String], body: AnyRef, headerParams: Map[String, String], contentType: String): String = { val client = getClient(host) - val querystring = queryParams.filter(k => k._2 != null).map(k => (escapeString(k._1) + "=" + escapeString(k._2))).mkString("?", "&", "") - val builder = client.resource(host + path + querystring).`type`("application/json") - + val querystring = queryParams.filter(k => k._2 != null).map(k => (escape(k._1) + "=" + escape(k._2))).mkString("?", "&", "") + val builder = client.resource(host + path + querystring).accept(contentType) headerParams.map(p => builder.header(p._1, p._2)) defaultHeaders.map(p => { headerParams.contains(p._1) match { @@ -94,22 +106,43 @@ object ApiInvoker { builder.get(classOf[ClientResponse]).asInstanceOf[ClientResponse] } case "POST" => { - builder.post(classOf[ClientResponse], serialize(body)) + if(body != null && body.isInstanceOf[File]) { + val file = body.asInstanceOf[File] + val form = new FormDataMultiPart() + form.field("filename", file.getName()) + form.bodyPart(new FileDataBodyPart("file", file, MediaType.MULTIPART_FORM_DATA_TYPE)) + builder.post(classOf[ClientResponse], form) + } + else { + if(body == null) builder.post(classOf[ClientResponse], serialize(body)) + else builder.`type`(contentType).post(classOf[ClientResponse], serialize(body)) + } } case "PUT" => { - builder.put(classOf[ClientResponse], serialize(body)) + if(body == null) builder.put(classOf[ClientResponse], null) + else builder.`type`(contentType).put(classOf[ClientResponse], serialize(body)) } case "DELETE" => { builder.delete(classOf[ClientResponse]) } case _ => null } - response.getClientResponseStatus() match { - case ClientResponse.Status.OK => response.getEntity(classOf[String]) + response.getClientResponseStatus().getStatusCode() match { + case 204 => "" + case code: Int if (Range(200, 299).contains(code)) => { + response.hasEntity() match { + case true => response.getEntity(classOf[String]) + case false => "" + } + } case _ => { + val entity = response.hasEntity() match { + case true => response.getEntity(classOf[String]) + case false => "no data" + } throw new ApiException( response.getClientResponseStatus().getStatusCode(), - response.getEntity(classOf[String])) + entity) } } } @@ -127,11 +160,6 @@ object ApiInvoker { } } -class ApiException extends Exception { - var code = 0 +class ApiException(val code: Int, msg: String) extends RuntimeException(msg) - def this(code: Int, msg: String) = { - this() - } -} diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Definition.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Definition.scala index 67d29195bf3..9f2996d793c 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Definition.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Definition.scala @@ -1,11 +1,11 @@ package com.wordnik.client.model -import com.wordnik.client.model.ExampleUsage -import com.wordnik.client.model.Note -import com.wordnik.client.model.Citation -import com.wordnik.client.model.TextPron import com.wordnik.client.model.Label +import com.wordnik.client.model.ExampleUsage +import com.wordnik.client.model.TextPron +import com.wordnik.client.model.Citation import com.wordnik.client.model.Related +import com.wordnik.client.model.Note case class Definition ( extendedText: String, text: String, diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Example.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Example.scala index 3d3e45996a2..349ec7e70a5 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Example.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/Example.scala @@ -1,8 +1,8 @@ package com.wordnik.client.model import com.wordnik.client.model.Sentence -import com.wordnik.client.model.ScoredWord import com.wordnik.client.model.ContentProvider +import com.wordnik.client.model.ScoredWord case class Example ( id: Long, exampleId: Long, diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/ScrabbleScoreResult.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/ScrabbleScoreResult.scala new file mode 100644 index 00000000000..2e275f2fe7b --- /dev/null +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/ScrabbleScoreResult.scala @@ -0,0 +1,5 @@ +package com.wordnik.client.model + +case class ScrabbleScoreResult ( + value: Int) + diff --git a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/WordOfTheDay.scala b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/WordOfTheDay.scala index 3c64a66571b..dccf9403f2d 100644 --- a/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/WordOfTheDay.scala +++ b/samples/client/wordnik-api/scala/src/main/scala/com/wordnik/client/model/WordOfTheDay.scala @@ -1,8 +1,8 @@ package com.wordnik.client.model import java.util.Date -import com.wordnik.client.model.SimpleDefinition import com.wordnik.client.model.SimpleExample +import com.wordnik.client.model.SimpleDefinition import com.wordnik.client.model.ContentProvider case class WordOfTheDay ( id: Long, diff --git a/samples/client/wordnik-api/scala/src/test/scala/WordListApiTest.scala b/samples/client/wordnik-api/scala/src/test/scala/WordListApiTest.scala index f609862ffa3..75d9ff7511b 100644 --- a/samples/client/wordnik-api/scala/src/test/scala/WordListApiTest.scala +++ b/samples/client/wordnik-api/scala/src/test/scala/WordListApiTest.scala @@ -63,12 +63,13 @@ class WordListApiTest extends FlatSpec with ShouldMatchers with BaseApiTest { } it should "add words to a list" in { - val wordsToAdd = new ListBuffer[StringValue] - wordsToAdd += StringValue("delicious") - wordsToAdd += StringValue("tasty") - wordsToAdd += StringValue("scrumptious") + val wordsToAdd = List( + StringValue("delicious"), + StringValue("tasty"), + StringValue("scrumptious") + ) - api.addWordsToWordList(sampleList.permalink, wordsToAdd.toArray, auth.token) + api.addWordsToWordList(sampleList.permalink, wordsToAdd, auth.token) } it should "get word list words" in { @@ -81,11 +82,12 @@ class WordListApiTest extends FlatSpec with ShouldMatchers with BaseApiTest { } it should "remove words from a list" in { - val wordsToRemove = new ListBuffer[StringValue] - wordsToRemove += StringValue("delicious") - wordsToRemove += StringValue("tasty") + val wordsToRemove = List( + StringValue("delicious"), + StringValue("tasty") + ) - api.deleteWordsFromWordList(sampleList.permalink, wordsToRemove.toArray, auth.token) + api.deleteWordsFromWordList(sampleList.permalink, wordsToRemove, auth.token) api.getWordListWords(sampleList.permalink, auth.token).get.size should be(1) }