diff --git a/README.md b/README.md index be8d83f..ef14a79 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,21 @@ By using the `MessageBuilder` it is possible to create images with media for cha client.sendMessage(message); ``` + +## Get the result +Sending an message returns the response body +```cs +{ + "details": "Created 1 message(s)", + "errorCode": 0, + "messages": [{ + "to": "00316012345678", + "status": "Accepted", + "reference": null, + "parts": 1, + "messageDetails": null, + "messageErrorCode": 0 + }] +} +``` + diff --git a/pom.xml b/pom.xml index 91a3038..3f8ad03 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ com.google.code.gson gson - 2.8.5 + 2.8.2 \ No newline at end of file diff --git a/src/main/java/MessagingClient.java b/src/main/java/MessagingClient.java deleted file mode 100644 index 485641e..0000000 --- a/src/main/java/MessagingClient.java +++ /dev/null @@ -1,81 +0,0 @@ -import com.google.gson.Gson; -import models.Message; -import models.Request; - -import models.Response; -import utils.HttpHelper; - -public class MessagingClient { - - private String productToken; - - - public MessagingClient(String productToken) { - this.productToken = productToken; - } - - - public Response.HttpResponseBody sendTextMessage(String messageText, String from, String[] to) { - - try { - MessageBuilder builder = new MessageBuilder(messageText, from, to); - - Message message = builder.Build(); - - String body = GetHttpPostBody(productToken, message); - - String result = HttpHelper.post(Config.ApiUrl, body); - - return getResponseBody(result); - - } catch (Exception e) { - System.out.println("Please check your request body."); - throw e; - } - } - - - public Response.HttpResponseBody sendMessage(Message message) { - - try { - String body = GetHttpPostBody(productToken, message); - - String result = HttpHelper.post(Config.ApiUrl, body); - - return getResponseBody(result); - } catch (Exception e) { - System.out.println("Please check your request body."); - throw e; - } - } - - - /// - /// Gets the HTTP post body. - /// - /// The API key. - /// The message to send. - /// - protected static Response.HttpResponseBody getResponseBody(String body) { - Response.HttpResponseBody result = new Gson().fromJson(body, Response.HttpResponseBody.class); - return result; - } - - - /// - /// Gets the HTTP post body. - /// - /// The API key. - /// The message to send. - /// - protected static String GetHttpPostBody(String productToken, Message message) { - Request.Messages messages = new Request.Messages(); - Request.MessagesEnvelope request = new Request.MessagesEnvelope(); - request.setAuthentication(new Request.Authentication(productToken)); - Message[] msg = new Message[]{message}; - request.setMessages(msg); - messages.setMessages(request); - return new Gson().toJson(messages); - } - -} diff --git a/src/main/java/Config.java b/src/main/java/com/cmtelecom/text/sdk/Config.java similarity index 75% rename from src/main/java/Config.java rename to src/main/java/com/cmtelecom/text/sdk/Config.java index 0f86337..fba18ac 100644 --- a/src/main/java/Config.java +++ b/src/main/java/com/cmtelecom/text/sdk/Config.java @@ -1,3 +1,5 @@ +package com.cmtelecom.text.sdk; + public class Config { public static String ApiUrl = "https://gw.cmtelecom.com/v1.0/message"; diff --git a/src/main/java/MessageBuilder.java b/src/main/java/com/cmtelecom/text/sdk/MessageBuilder.java similarity index 88% rename from src/main/java/MessageBuilder.java rename to src/main/java/com/cmtelecom/text/sdk/MessageBuilder.java index 3bb42f0..3cef41b 100644 --- a/src/main/java/MessageBuilder.java +++ b/src/main/java/com/cmtelecom/text/sdk/MessageBuilder.java @@ -1,13 +1,14 @@ -import models.Body; -import models.Channel; -import models.Message; -import models.Recipient; -import models.multichannel.IRichMessage; -import models.multichannel.RichContent; -import models.multichannel.Suggestion; +package com.cmtelecom.text.sdk; + +import com.cmtelecom.text.sdk.models.Body; +import com.cmtelecom.text.sdk.models.Channel; +import com.cmtelecom.text.sdk.models.Message; +import com.cmtelecom.text.sdk.models.Recipient; +import com.cmtelecom.text.sdk.models.multichannel.IRichMessage; +import com.cmtelecom.text.sdk.models.multichannel.RichContent; +import com.cmtelecom.text.sdk.models.multichannel.Suggestion; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class MessageBuilder { diff --git a/src/main/java/com/cmtelecom/text/sdk/MessagingClient.java b/src/main/java/com/cmtelecom/text/sdk/MessagingClient.java new file mode 100644 index 0000000..b540d53 --- /dev/null +++ b/src/main/java/com/cmtelecom/text/sdk/MessagingClient.java @@ -0,0 +1,78 @@ +package com.cmtelecom.text.sdk; + +import com.google.gson.Gson; +import com.cmtelecom.text.sdk.models.Message; +import com.cmtelecom.text.sdk.models.Request; +import com.cmtelecom.text.sdk.models.Response; +import com.cmtelecom.text.sdk.utils.HttpHelper; + +public class MessagingClient { + + private String productToken; + + + public MessagingClient( String productToken ) { + this.productToken = productToken; + } + + + public Response.HttpResponseBody sendTextMessage( String messageText, String from, String[] to ) { + + MessageBuilder builder = new MessageBuilder( messageText, from, to ); + + Message message = builder.Build(); + + String body = GetHttpPostBody( productToken, message ); + + String result = HttpHelper.post( Config.ApiUrl, body ); + + return getResponseBody( result ); + } + + + public Response.HttpResponseBody sendMessage( Message message ) { + String body = GetHttpPostBody( productToken, message ); + String result = HttpHelper.post( Config.ApiUrl, body ); + return getResponseBody( result ); + } + + + /// + /// Gets the HTTP post body. + /// + /// The API key. + /// The message to send. + /// + protected static Response.HttpResponseBody getResponseBody( String body ) { + try { + Response.HttpResponseBody result = new Gson().fromJson( body, Response.HttpResponseBody.class ); + return result; + } + catch ( Exception e ) { + throw new RuntimeException( "Invalid json response-body", e ); + } + } + + + /// + /// Gets the HTTP post body. + /// + /// The API key. + /// The message to send. + /// + protected static String GetHttpPostBody( String productToken, Message message ) { + Request.Messages messages = new Request.Messages(); + Request.MessagesEnvelope request = new Request.MessagesEnvelope(); + request.setAuthentication( new Request.Authentication( productToken ) ); + Message[] msg = new Message[]{ message }; + request.setMessages( msg ); + messages.setMessages( request ); + try { + return new Gson().toJson( messages ); + } + catch ( Exception e ) { + throw new RuntimeException( "Invalid request body", e ); + } + } + +} diff --git a/src/main/java/models/Body.java b/src/main/java/com/cmtelecom/text/sdk/models/Body.java similarity index 97% rename from src/main/java/models/Body.java rename to src/main/java/com/cmtelecom/text/sdk/models/Body.java index d969e65..0449f00 100644 --- a/src/main/java/models/Body.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/Body.java @@ -1,4 +1,4 @@ -package models; +package com.cmtelecom.text.sdk.models; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/Channel.java b/src/main/java/com/cmtelecom/text/sdk/models/Channel.java similarity index 97% rename from src/main/java/models/Channel.java rename to src/main/java/com/cmtelecom/text/sdk/models/Channel.java index 05813ba..5b6b4c1 100644 --- a/src/main/java/models/Channel.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/Channel.java @@ -1,4 +1,4 @@ -package models; +package com.cmtelecom.text.sdk.models; public enum Channel { /// diff --git a/src/main/java/models/Message.java b/src/main/java/com/cmtelecom/text/sdk/models/Message.java similarity index 98% rename from src/main/java/models/Message.java rename to src/main/java/com/cmtelecom/text/sdk/models/Message.java index e533c94..e25c667 100644 --- a/src/main/java/models/Message.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/Message.java @@ -1,4 +1,4 @@ -package models; +package com.cmtelecom.text.sdk.models; import com.google.gson.annotations.SerializedName; @@ -113,7 +113,7 @@ public class Message { public String Reference; - public models.multichannel.RichContent RichContent; + public com.cmtelecom.text.sdk.models.multichannel.RichContent RichContent; public Message(Body body, String from, List recipientList) { diff --git a/src/main/java/models/Recipient.java b/src/main/java/com/cmtelecom/text/sdk/models/Recipient.java similarity index 88% rename from src/main/java/models/Recipient.java rename to src/main/java/com/cmtelecom/text/sdk/models/Recipient.java index 0c0c56b..6e9c670 100644 --- a/src/main/java/models/Recipient.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/Recipient.java @@ -1,4 +1,4 @@ -package models; +package com.cmtelecom.text.sdk.models; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/Request.java b/src/main/java/com/cmtelecom/text/sdk/models/Request.java similarity index 97% rename from src/main/java/models/Request.java rename to src/main/java/com/cmtelecom/text/sdk/models/Request.java index 17076e7..0ecb4d9 100644 --- a/src/main/java/models/Request.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/Request.java @@ -1,4 +1,4 @@ -package models; +package com.cmtelecom.text.sdk.models; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/Response.java b/src/main/java/com/cmtelecom/text/sdk/models/Response.java similarity index 93% rename from src/main/java/models/Response.java rename to src/main/java/com/cmtelecom/text/sdk/models/Response.java index b7e5004..101f35f 100644 --- a/src/main/java/models/Response.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/Response.java @@ -1,4 +1,4 @@ -package models; +package com.cmtelecom.text.sdk.models; diff --git a/src/main/java/models/multichannel/Carousel.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/Carousel.java similarity index 88% rename from src/main/java/models/multichannel/Carousel.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/Carousel.java index bdacca5..8d52428 100644 --- a/src/main/java/models/multichannel/Carousel.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/Carousel.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/CarouselCardWidth.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/CarouselCardWidth.java similarity index 78% rename from src/main/java/models/multichannel/CarouselCardWidth.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/CarouselCardWidth.java index 56b11bf..9685a82 100644 --- a/src/main/java/models/multichannel/CarouselCardWidth.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/CarouselCardWidth.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; public enum CarouselCardWidth { /// diff --git a/src/main/java/models/multichannel/Dial.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/Dial.java similarity index 81% rename from src/main/java/models/multichannel/Dial.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/Dial.java index 9973e97..13fae2c 100644 --- a/src/main/java/models/multichannel/Dial.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/Dial.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/DialSuggestion.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/DialSuggestion.java similarity index 91% rename from src/main/java/models/multichannel/DialSuggestion.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/DialSuggestion.java index 32c23c8..6d1ecd2 100644 --- a/src/main/java/models/multichannel/DialSuggestion.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/DialSuggestion.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/com/cmtelecom/text/sdk/models/multichannel/IRichMessage.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/IRichMessage.java new file mode 100644 index 0000000..cda1b84 --- /dev/null +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/IRichMessage.java @@ -0,0 +1,4 @@ +package com.cmtelecom.text.sdk.models.multichannel; + +public interface IRichMessage { +} diff --git a/src/main/java/models/multichannel/MediaContent.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/MediaContent.java similarity index 94% rename from src/main/java/models/multichannel/MediaContent.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/MediaContent.java index 75beaf9..29a83d2 100644 --- a/src/main/java/models/multichannel/MediaContent.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/MediaContent.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; public class MediaContent { /// diff --git a/src/main/java/models/multichannel/MediaMessage.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/MediaMessage.java similarity index 93% rename from src/main/java/models/multichannel/MediaMessage.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/MediaMessage.java index a002ff8..71d65c6 100644 --- a/src/main/java/models/multichannel/MediaMessage.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/MediaMessage.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/OpenUrlSuggestion.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/OpenUrlSuggestion.java similarity index 88% rename from src/main/java/models/multichannel/OpenUrlSuggestion.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/OpenUrlSuggestion.java index 45279c9..4429aba 100644 --- a/src/main/java/models/multichannel/OpenUrlSuggestion.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/OpenUrlSuggestion.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/ReplySuggestion.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/ReplySuggestion.java similarity index 90% rename from src/main/java/models/multichannel/ReplySuggestion.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/ReplySuggestion.java index 5411fdd..23ae266 100644 --- a/src/main/java/models/multichannel/ReplySuggestion.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/ReplySuggestion.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/RichCard.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/RichCard.java similarity index 87% rename from src/main/java/models/multichannel/RichCard.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/RichCard.java index 7ddc4e4..b696034 100644 --- a/src/main/java/models/multichannel/RichCard.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/RichCard.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/RichContent.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/RichContent.java similarity index 96% rename from src/main/java/models/multichannel/RichContent.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/RichContent.java index ce7fb9d..caa4bbb 100644 --- a/src/main/java/models/multichannel/RichContent.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/RichContent.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/Suggestion.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/Suggestion.java similarity index 87% rename from src/main/java/models/multichannel/Suggestion.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/Suggestion.java index e383213..595e8bc 100644 --- a/src/main/java/models/multichannel/Suggestion.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/Suggestion.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/TextMessage.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/TextMessage.java similarity index 91% rename from src/main/java/models/multichannel/TextMessage.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/TextMessage.java index 65611be..2d5e9c4 100644 --- a/src/main/java/models/multichannel/TextMessage.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/TextMessage.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/ViewLocationOptions.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/ViewLocationOptions.java similarity index 95% rename from src/main/java/models/multichannel/ViewLocationOptions.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/ViewLocationOptions.java index fe4663d..73dfa1d 100644 --- a/src/main/java/models/multichannel/ViewLocationOptions.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/ViewLocationOptions.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/models/multichannel/ViewLocationSuggestion.java b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/ViewLocationSuggestion.java similarity index 89% rename from src/main/java/models/multichannel/ViewLocationSuggestion.java rename to src/main/java/com/cmtelecom/text/sdk/models/multichannel/ViewLocationSuggestion.java index 49722b0..1392f58 100644 --- a/src/main/java/models/multichannel/ViewLocationSuggestion.java +++ b/src/main/java/com/cmtelecom/text/sdk/models/multichannel/ViewLocationSuggestion.java @@ -1,4 +1,4 @@ -package models.multichannel; +package com.cmtelecom.text.sdk.models.multichannel; import com.google.gson.annotations.SerializedName; diff --git a/src/main/java/com/cmtelecom/text/sdk/utils/HttpHelper.java b/src/main/java/com/cmtelecom/text/sdk/utils/HttpHelper.java new file mode 100644 index 0000000..77735c6 --- /dev/null +++ b/src/main/java/com/cmtelecom/text/sdk/utils/HttpHelper.java @@ -0,0 +1,60 @@ +package com.cmtelecom.text.sdk.utils; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpHelper { + private static String sendRequest( String method, String url, String data ) { + HttpURLConnection conn = null; + try { + + URL obj = new URL( url ); + conn = (HttpURLConnection) obj.openConnection(); + + //add request header + conn.setRequestMethod( method ); + + conn.setRequestProperty( "Content-Type", "application/json" ); + + + if ( data != null ) { + // Send request + conn.setDoOutput( true ); + try ( DataOutputStream wr = new DataOutputStream( conn.getOutputStream() ) ) { + wr.writeBytes( data ); + } + } + + StringBuilder response = new StringBuilder(); + try ( BufferedReader in = new BufferedReader( new InputStreamReader( conn.getInputStream() ) ) ) { + String inputLine; + while ( (inputLine = in.readLine()) != null ) { + response.append( inputLine ); + } + } + + System.out.println(response.toString()); + + return response.toString(); + + + } + catch ( Exception e ) { + throw new RuntimeException( String.format( "Error sending request to url: %s with data: %s", url, data ), e ); + } + finally { + if ( conn != null ) { + conn.disconnect(); + } + } + } + + // HTTP POST request + public static String post( String url, String urlParameters ) { + return sendRequest( "POST", url, urlParameters ); + } + +} diff --git a/src/main/java/models/multichannel/IRichMessage.java b/src/main/java/models/multichannel/IRichMessage.java deleted file mode 100644 index 611abd3..0000000 --- a/src/main/java/models/multichannel/IRichMessage.java +++ /dev/null @@ -1,4 +0,0 @@ -package models.multichannel; - -public interface IRichMessage { -} diff --git a/src/main/java/utils/HttpHelper.java b/src/main/java/utils/HttpHelper.java deleted file mode 100644 index f03e558..0000000 --- a/src/main/java/utils/HttpHelper.java +++ /dev/null @@ -1,55 +0,0 @@ -package utils; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.InputStreamReader; -import java.net.ConnectException; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLEncoder; - -public class HttpHelper { - private static String sendRequest(String method, String url, String data) { - try { - - URL obj = new URL(url); - HttpURLConnection con = (HttpURLConnection) obj.openConnection(); - - //add request header - con.setRequestMethod(method); - - con.setRequestProperty("Content-Type", "application/json"); - - - if (data != null) { - // Send request - con.setDoOutput(true); - try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) { - wr.writeBytes(data); - } - } - - StringBuilder response = new StringBuilder(); - try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))) { - String inputLine; - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } - } - - return response.toString(); - } catch (ConnectException ce) { - System.out.println(ce.getMessage()); - return ce.toString(); - } catch (Exception e) { - e.printStackTrace(); - return e.toString(); - } - } - - // HTTP POST request - public static String post(String url, String urlParameters) { - return sendRequest("POST", url, urlParameters); - } - -} diff --git a/text-sdk-java.iml b/text-sdk-java.iml index ef84980..fd38d0d 100644 --- a/text-sdk-java.iml +++ b/text-sdk-java.iml @@ -5,10 +5,12 @@ + + - + \ No newline at end of file