diff --git a/README.md b/README.md index c1cdd47f..1711424c 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ If you are using maven simply add the messagebird API to your dependencies like com.messagebird messagebird-api - 1.1.1 + 1.2.0 ``` @@ -36,7 +36,7 @@ In case you are building without maven you still need maven to build the librari then simply copy the following jar's over to your project ``` -messagebird-api-1.1.1.jar +messagebird-api-1.2.0.jar jackson-core-2.1.1.jar jackson-databind-2.1.1.jar jackson-mapper-asl-1.9.13.jar @@ -106,7 +106,7 @@ To try out the command line examples follow the above build instructions. When everything did build successful you can try out the API like this: ```shell cd examples/target -java -cp examples-1.0.1-jar-with-dependencies.jar ExampleSendMessage test_gshuPaZoeEG6ovbc8M79w0QyM 31612345678 "This is a test message" +java -cp examples-1.2.0-jar-with-dependencies.jar ExampleSendMessage test_gshuPaZoeEG6ovbc8M79w0QyM 31612345678 "This is a test message" ``` Please see the other examples for a complete overview of all the available API calls. diff --git a/api/pom.xml b/api/pom.xml index 8864e5e9..0337f831 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -6,7 +6,7 @@ com.messagebird messagebird-api - 1.1.1 + 1.2.0 jar ${project.groupId}:${project.artifactId} diff --git a/api/src/main/java/com/messagebird/MessageBirdClient.java b/api/src/main/java/com/messagebird/MessageBirdClient.java index 07ecef72..47092cb0 100644 --- a/api/src/main/java/com/messagebird/MessageBirdClient.java +++ b/api/src/main/java/com/messagebird/MessageBirdClient.java @@ -32,6 +32,8 @@ public class MessageBirdClient { private static final String MESSAGESPATH = "/messages"; private static final String VOICEMESSAGESPATH = "/voicemessages"; private static final String VERIFYPATH = "/verify"; + private static final String LOOKUPPATH = "/lookup"; + private static final String LOOKUPHLRPATH = "/lookup/%s/hlr"; private MessageBirdService messageBirdService; public MessageBirdClient(final MessageBirdService messageBirdService) { @@ -385,4 +387,124 @@ public void deleteVerifyObject(String id) throws NotFoundException, GeneralExcep } messageBirdService.deleteByID(VERIFYPATH, id); } + + /** + * Send a Lookup request + * + * @param Lookup + * @return Lookup + * @throws UnauthorizedException + * @throws GeneralException + * @throws NotFoundException + */ + public Lookup viewLookup(final Lookup lookup) throws UnauthorizedException, GeneralException, NotFoundException { + if (lookup.getPhoneNumber() == null) { + throw new IllegalArgumentException("Phonenumber must be specified."); + } + final Map params = new LinkedHashMap(); + if (lookup.getCountryCode() != null) { + params.put("countryCode", lookup.getCountryCode()); + } + return messageBirdService.requestByID(LOOKUPPATH, String.valueOf(lookup.getPhoneNumber()), params, Lookup.class); + } + + /** + * Send a Lookup request + * + * @param phonenumber + * @return Lookup + * @throws UnauthorizedException + * @throws GeneralException + */ + public Lookup viewLookup(final BigInteger phonenumber) throws UnauthorizedException, GeneralException, NotFoundException { + if (phonenumber == null) { + throw new IllegalArgumentException("Phonenumber must be specified."); + } + final Lookup lookup = new Lookup(phonenumber); + return this.viewLookup(lookup); + } + + /** + * Request a Lookup HLR (lookup) + * + * @param LookupHlr + * @return lookupHlr + * @throws UnauthorizedException + * @throws GeneralException + */ + public LookupHlr requestLookupHlr(final LookupHlr lookupHlr) throws UnauthorizedException, GeneralException { + if (lookupHlr.getPhoneNumber() == null) { + throw new IllegalArgumentException("Phonenumber must be specified."); + } + if (lookupHlr.getReference() == null) { + throw new IllegalArgumentException("Reference must be specified."); + } + final Map payload = new LinkedHashMap(); + payload.put("phoneNumber", lookupHlr.getPhoneNumber()); + payload.put("reference", lookupHlr.getReference()); + if (lookupHlr.getCountryCode() != null) { + payload.put("countryCode", lookupHlr.getCountryCode()); + } + return messageBirdService.sendPayLoad(String.format(LOOKUPHLRPATH, lookupHlr.getPhoneNumber()), payload, LookupHlr.class); + } + + /** + * Request a Lookup HLR (lookup) + * + * @param phonenumber + * @param reference + * @return lookupHlr + * @throws UnauthorizedException + * @throws GeneralException + */ + public LookupHlr requestLookupHlr(final BigInteger phonenumber, final String reference) throws UnauthorizedException, GeneralException { + if (phonenumber == null) { + throw new IllegalArgumentException("Phonenumber must be specified."); + } + if (reference == null) { + throw new IllegalArgumentException("Reference must be specified."); + } + final LookupHlr lookupHlr = new LookupHlr(); + lookupHlr.setPhoneNumber(phonenumber); + lookupHlr.setReference(reference); + return this.requestLookupHlr(lookupHlr); + } + + /** + * View a Lookup HLR (lookup) + * + * @param LookupHlr + * @return LookupHlr + * @throws UnauthorizedException + * @throws GeneralException + * @throws NotFoundException + */ + public LookupHlr viewLookupHlr(final LookupHlr lookupHlr) throws UnauthorizedException, GeneralException, NotFoundException { + if (lookupHlr.getPhoneNumber() == null) { + throw new IllegalArgumentException("Phonenumber must be specified"); + } + final Map params = new LinkedHashMap(); + if (lookupHlr.getCountryCode() != null) { + params.put("countryCode", lookupHlr.getCountryCode()); + } + return messageBirdService.requestByID(String.format(LOOKUPHLRPATH, lookupHlr.getPhoneNumber()), "", params, LookupHlr.class); + } + + /** + * View a Lookup HLR (lookup) + * + * @param phonenumber + * @return LookupHlr + * @throws UnauthorizedException + * @throws GeneralException + * @throws NotFoundException + */ + public LookupHlr viewLookupHlr(final BigInteger phonenumber) throws UnauthorizedException, GeneralException, NotFoundException { + if (phonenumber == null) { + throw new IllegalArgumentException("Phonenumber must be specified"); + } + final LookupHlr lookupHlr = new LookupHlr(); + lookupHlr.setPhoneNumber(phonenumber); + return this.viewLookupHlr(lookupHlr); + } } diff --git a/api/src/main/java/com/messagebird/MessageBirdServiceImpl.java b/api/src/main/java/com/messagebird/MessageBirdServiceImpl.java index 3872e396..2750d710 100644 --- a/api/src/main/java/com/messagebird/MessageBirdServiceImpl.java +++ b/api/src/main/java/com/messagebird/MessageBirdServiceImpl.java @@ -32,7 +32,7 @@ public class MessageBirdServiceImpl implements MessageBirdService { private static final List REQUESTMETHODS = Arrays.asList(new String[]{"GET", "POST", "DELETE"}); private final String accessKey; private final String serviceUrl = "https://rest.messagebird.com"; - private final String clientVersion = "1.1.1"; + private final String clientVersion = "1.2.0"; private final String userAgentString = "MessageBird/Java ApiClient/" + clientVersion; private Proxy proxy = null; @@ -65,7 +65,7 @@ public R requestByID(String request, String id, Map params, if (id != null) { path = "/" + id; } - // Make rest of get request + // Make rest of GET request String queryParams = ""; if (!params.isEmpty()) { queryParams = "?" + getPathVariables(params); diff --git a/api/src/main/java/com/messagebird/objects/Hlr.java b/api/src/main/java/com/messagebird/objects/Hlr.java index 12883e25..d6244e57 100644 --- a/api/src/main/java/com/messagebird/objects/Hlr.java +++ b/api/src/main/java/com/messagebird/objects/Hlr.java @@ -14,9 +14,9 @@ public class Hlr { private String id; private String href; - private BigInteger msisdn; + protected BigInteger msisdn; private String network; - private String reference; + protected String reference; private String status; private Date createdDatetime; private Date statusDatetime; diff --git a/api/src/main/java/com/messagebird/objects/Lookup.java b/api/src/main/java/com/messagebird/objects/Lookup.java new file mode 100644 index 00000000..2a7780eb --- /dev/null +++ b/api/src/main/java/com/messagebird/objects/Lookup.java @@ -0,0 +1,108 @@ +package com.messagebird.objects; + +import java.io.Serializable; +import java.math.BigInteger; + +public class Lookup implements Serializable { + + private static final long serialVersionUID = 8927014359452296030L; + + private String href; + private String countryCode; + private Integer countryPrefix; + private BigInteger phoneNumber; + private String type; + private Formats formats; + private LookupHlr hlr; + + @Override + public String toString() { + return "Lookup{" + + "href=" + href + + ", countryCode=" + countryCode + + ", countryPrefix=" + countryPrefix + + ", phoneNumber=" + phoneNumber + + ", type=" + type + + ", formats=" + formats + + ", hlr=" + hlr + + "}"; + } + + public Lookup() { + } + + public Lookup(BigInteger phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getHref() { + return href; + } + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public Integer getCountryPrefix() { + return countryPrefix; + } + + public BigInteger getPhoneNumber() { + return phoneNumber; + } + + public String getType() { + return type; + } + + public Formats getFormats() { + return formats; + } + + public Hlr getHlr() { + return hlr; + } + + static public class Formats implements Serializable { + + private static final long serialVersionUID = 2165916336570704972L; + + private String e164; + private String international; + private String national; + private String rfc3966; + + public Formats() { + } + + @Override + public String toString() { + return "Formats{" + + "e164=" + e164 + + ", international=" + international + + ", national=" + national + + ", rfc3966=" + rfc3966 + + '}'; + } + + public String getE164() { + return e164; + } + + public String getInternational() { + return international; + } + + public String getNational() { + return national; + } + + public String getRfc3966() { + return rfc3966; + } + } +} diff --git a/api/src/main/java/com/messagebird/objects/LookupHlr.java b/api/src/main/java/com/messagebird/objects/LookupHlr.java new file mode 100644 index 00000000..98e568ae --- /dev/null +++ b/api/src/main/java/com/messagebird/objects/LookupHlr.java @@ -0,0 +1,27 @@ +package com.messagebird.objects; + +import java.math.BigInteger; + +public class LookupHlr extends Hlr { + private String countryCode; + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + public BigInteger getPhoneNumber() { + return msisdn; + } + + public void setPhoneNumber(BigInteger phoneNumber) { + this.msisdn = phoneNumber; + } + + public void setReference(String reference) { + this.reference = reference; + } +} diff --git a/examples/pom.xml b/examples/pom.xml index 88361a6a..b1c725b2 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -6,7 +6,7 @@ com.messagebird examples - 1.0.1 + 1.2.0 @@ -20,7 +20,7 @@ com.messagebird messagebird-api - 1.1.1 + 1.2.0 diff --git a/examples/src/main/java/ExampleRequestLookupHlr.java b/examples/src/main/java/ExampleRequestLookupHlr.java new file mode 100644 index 00000000..730709be --- /dev/null +++ b/examples/src/main/java/ExampleRequestLookupHlr.java @@ -0,0 +1,50 @@ +import com.messagebird.MessageBirdClient; +import com.messagebird.MessageBirdService; +import com.messagebird.MessageBirdServiceImpl; +import com.messagebird.exceptions.NotFoundException; +import com.messagebird.exceptions.GeneralException; +import com.messagebird.exceptions.UnauthorizedException; +import com.messagebird.objects.LookupHlr; + +import java.math.BigInteger; + +public class ExampleRequestLookupHlr { + + public static void main(String[] args) { + + if (args.length < 3) { + System.out.println("Please specify your access key, phone and reference in that order example : java -jar test_accesskey 31612345678 reference"); + return; + } + + // First create your service object + final MessageBirdService wsr = new MessageBirdServiceImpl(args[0]); + + // Add the service to the client + final MessageBirdClient messageBirdClient = new MessageBirdClient(wsr); + + try { + // Request Lookup HLR + System.out.println("Requesting Lookup HLR:"); + final LookupHlr lookupHlrRequest = new LookupHlr(); + lookupHlrRequest.setPhoneNumber(new BigInteger(args[1])); + lookupHlrRequest.setReference(args[2]); + // Optionally set a country code (in the case of national numbers) + if (args.length > 3 && args[3] != null && !args[3].isEmpty()) { + lookupHlrRequest.setCountryCode(args[3]); + } + final LookupHlr lookupHlr = messageBirdClient.requestLookupHlr(lookupHlrRequest); + System.out.println(lookupHlr.toString()); + } catch (UnauthorizedException unauthorized) { + if (unauthorized.getErrors()!=null) { + System.out.println(unauthorized.getErrors().toString()); + } + unauthorized.printStackTrace(); + } catch (GeneralException generalException) { + if (generalException.getErrors() !=null) { + System.out.println(generalException.getErrors().toString()); + } + generalException.printStackTrace(); + } + } +} diff --git a/examples/src/main/java/ExampleViewLookup.java b/examples/src/main/java/ExampleViewLookup.java new file mode 100644 index 00000000..ee4a14ba --- /dev/null +++ b/examples/src/main/java/ExampleViewLookup.java @@ -0,0 +1,53 @@ +import com.messagebird.MessageBirdClient; +import com.messagebird.MessageBirdService; +import com.messagebird.MessageBirdServiceImpl; +import com.messagebird.exceptions.NotFoundException; +import com.messagebird.exceptions.GeneralException; +import com.messagebird.exceptions.UnauthorizedException; +import com.messagebird.objects.Lookup; + +import java.math.BigInteger; + +public class ExampleViewLookup { + + public static void main(String[] args) { + + if (args.length < 2) { + System.out.println("Please specify your access key and phone in that order example : java -jar test_accesskey 31612345678"); + return; + } + + // First create your service object + final MessageBirdService wsr = new MessageBirdServiceImpl(args[0]); + + // Add the service to the client + final MessageBirdClient messageBirdClient = new MessageBirdClient(wsr); + + try { + // View Lookup + System.out.println("Viewing Lookup:"); + final Lookup lookupRequest = new Lookup(new BigInteger(args[1])); + // Optionally set a country code (in the case of national numbers) + if (args.length > 2 && args[2] != null && !args[2].isEmpty()) { + lookupRequest.setCountryCode(args[2]); + } + final Lookup lookup = messageBirdClient.viewLookup(lookupRequest); + System.out.println(lookup.toString()); + } catch (UnauthorizedException unauthorized) { + if (unauthorized.getErrors()!=null) { + System.out.println(unauthorized.getErrors().toString()); + } + unauthorized.printStackTrace(); + } catch (GeneralException generalException) { + if (generalException.getErrors() !=null) { + System.out.println(generalException.getErrors().toString()); + } + generalException.printStackTrace(); + } catch (NotFoundException notFoundException) { + if (notFoundException.getErrors() !=null) { + System.out.println(notFoundException.getErrors().toString()); + } + notFoundException.printStackTrace(); + } + } +} diff --git a/examples/src/main/java/ExampleViewLookupHlr.java b/examples/src/main/java/ExampleViewLookupHlr.java new file mode 100644 index 00000000..9c638cab --- /dev/null +++ b/examples/src/main/java/ExampleViewLookupHlr.java @@ -0,0 +1,54 @@ +import com.messagebird.MessageBirdClient; +import com.messagebird.MessageBirdService; +import com.messagebird.MessageBirdServiceImpl; +import com.messagebird.exceptions.NotFoundException; +import com.messagebird.exceptions.GeneralException; +import com.messagebird.exceptions.UnauthorizedException; +import com.messagebird.objects.LookupHlr; + +import java.math.BigInteger; + +public class ExampleViewLookupHlr { + + public static void main(String[] args) { + + if (args.length < 2) { + System.out.println("Please specify your access key and phone in that order example : java -jar test_accesskey 31612345678"); + return; + } + + // First create your service object + final MessageBirdService wsr = new MessageBirdServiceImpl(args[0]); + + // Add the service to the client + final MessageBirdClient messageBirdClient = new MessageBirdClient(wsr); + + try { + // View Lookup HLR + System.out.println("Viewing Lookup HLR:"); + final LookupHlr lookupHlrRequest = new LookupHlr(); + lookupHlrRequest.setPhoneNumber(new BigInteger(args[1])); + // Optionally set a country code (in the case of national numbers) + if (args.length > 2 && args[2] != null && !args[2].isEmpty()) { + lookupHlrRequest.setCountryCode(args[2]); + } + final LookupHlr lookupHlr = messageBirdClient.viewLookupHlr(lookupHlrRequest); + System.out.println(lookupHlr.toString()); + } catch (UnauthorizedException unauthorized) { + if (unauthorized.getErrors()!=null) { + System.out.println(unauthorized.getErrors().toString()); + } + unauthorized.printStackTrace(); + } catch (GeneralException generalException) { + if (generalException.getErrors() !=null) { + System.out.println(generalException.getErrors().toString()); + } + generalException.printStackTrace(); + } catch (NotFoundException notFoundException) { + if (notFoundException.getErrors() !=null) { + System.out.println(notFoundException.getErrors().toString()); + } + notFoundException.printStackTrace(); + } + } +}