From 96efe26a8b0d31828ad18f6335c50183107aab3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20BURDY?= Date: Mon, 10 Aug 2015 12:00:10 +0200 Subject: [PATCH 1/9] Fork tylerroach.com.eventsource_android, adding Eventsource constructors, making it proxifiable. --- eventsource-android.iml | 8 +- .../com/eventsource_android/EventSource.java | 83 +++++++++++-------- .../impl/netty/EventSourceChannelHandler.java | 32 +++++-- 3 files changed, 76 insertions(+), 47 deletions(-) diff --git a/eventsource-android.iml b/eventsource-android.iml index 2a02201..9835b86 100644 --- a/eventsource-android.iml +++ b/eventsource-android.iml @@ -1,13 +1,14 @@ - + - + @@ -17,5 +18,4 @@ - - + \ No newline at end of file diff --git a/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java b/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java index da28d1b..b60c879 100644 --- a/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java +++ b/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java @@ -34,64 +34,66 @@ public class EventSource implements EventSourceHandler { private final EventSourceChannelHandler clientHandler; private final EventSourceHandler eventSourceHandler; - private URI uri; + private URI uri, requestUri; private Map headers; private int readyState; /** - * Creates a new EventSource client. The client will reconnect on - * lost connections automatically, unless the connection is closed explicitly by a call to + * Creates a new EventSource client. The client will reconnect on + * lost connections automatically, unless the connection is closed explicitly by a call to * {@link tylerjroach.com.eventsource_android.EventSource#close()}. - * + *

* For sample usage, see examples at GitHub. - * - * @param executor the executor that will receive events + * + * @param executor the executor that will receive events * @param reconnectionTimeMillis delay before a reconnect is made - in the event of a lost connection - * @param pURI where to connect - * @param eventSourceHandler receives events - * @param headers Map of additional headers, such as passing auth tokens + * @param pURI where to connect + * @param eventSourceHandler receives events + * @param headers Map of additional headers, such as passing auth tokens * @see #close() */ + public EventSource(Executor executor, long reconnectionTimeMillis, final URI pURI, URI requestUri, EventSourceHandler eventSourceHandler, Map headers) { + this(executor, reconnectionTimeMillis, pURI,requestUri, null, eventSourceHandler, headers); + } public EventSource(Executor executor, long reconnectionTimeMillis, final URI pURI, EventSourceHandler eventSourceHandler, Map headers) { - this(executor, reconnectionTimeMillis, pURI, null, eventSourceHandler, headers); + this(executor, reconnectionTimeMillis, pURI, null, eventSourceHandler, headers); } - public EventSource(Executor executor, long reconnectionTimeMillis, final URI pURI, SSLEngineFactory fSSLEngine, EventSourceHandler eventSourceHandler, Map headers) { + + public EventSource(Executor executor, long reconnectionTimeMillis, final URI pURI, URI requestUri, SSLEngineFactory fSSLEngine, EventSourceHandler eventSourceHandler, Map headers) { this.eventSourceHandler = eventSourceHandler; - bootstrap = new ClientBootstrap( new NioClientSocketChannelFactory( Executors.newSingleThreadExecutor(), Executors.newSingleThreadExecutor())); if (pURI.getScheme().equals("https") && fSSLEngine == null) { - fSSLEngine = new SSLEngineFactory(); + fSSLEngine = new SSLEngineFactory(); } else { - //If we don't do this then the pipeline still attempts to use SSL - fSSLEngine = null; + //If we don't do this then the pipeline still attempts to use SSL + fSSLEngine = null; } final SSLEngineFactory SSLFactory = fSSLEngine; - + uri = pURI; int port = uri.getPort(); - if (port==-1) - { - port = (uri.getScheme().equals("https"))?443:80; + if (port == -1) { + port = (uri.getScheme().equals("https")) ? 443 : 80; } bootstrap.setOption("remoteAddress", new InetSocketAddress(uri.getHost(), port)); // add this class as the event source handler so the connect() call can be intercepted AsyncEventSourceHandler asyncHandler = new AsyncEventSourceHandler(executor, this); - clientHandler = new EventSourceChannelHandler(asyncHandler, reconnectionTimeMillis, bootstrap, uri, headers); + clientHandler = new EventSourceChannelHandler(asyncHandler, reconnectionTimeMillis, bootstrap, uri, requestUri, headers); bootstrap.setPipelineFactory(new ChannelPipelineFactory() { public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = Channels.pipeline(); if (SSLFactory != null) { - SSLEngine sslEngine = SSLFactory.GetNewSSLEngine(); - sslEngine.setUseClientMode(true); + SSLEngine sslEngine = SSLFactory.GetNewSSLEngine(); + sslEngine.setUseClientMode(true); pipeline.addLast("ssl", new SslHandler(sslEngine)); } @@ -105,6 +107,20 @@ public ChannelPipeline getPipeline() throws Exception { }); } + public EventSource(URI proxyPrefixUri, URI requestUri, EventSourceHandler eventSourceHandler, Map headers) { + this(URI.create(proxyPrefixUri.toString() + requestUri.toString()), requestUri, null, eventSourceHandler, headers); + } + + public EventSource(URI uri, URI requestUri, SSLEngineFactory sslEngineFactory, EventSourceHandler eventSourceHandler) { + this(Executors.newSingleThreadExecutor(), DEFAULT_RECONNECTION_TIME_MILLIS, uri, requestUri, sslEngineFactory, eventSourceHandler, null); + } + + public EventSource(URI uri, URI requestUri, SSLEngineFactory sslEngineFactory, EventSourceHandler eventSourceHandler, Map headers) { + this(Executors.newSingleThreadExecutor(), DEFAULT_RECONNECTION_TIME_MILLIS, uri, requestUri, sslEngineFactory, eventSourceHandler, headers); + } + + + public EventSource(String uri, EventSourceHandler eventSourceHandler) { this(uri, null, eventSourceHandler); } @@ -117,28 +133,23 @@ public EventSource(URI uri, EventSourceHandler eventSourceHandler) { this(uri, null, eventSourceHandler); } - public EventSource(URI uri, EventSourceHandler eventSourceHandler, Map headers) { - this(uri, null, eventSourceHandler, headers); - } - - public EventSource(URI uri, SSLEngineFactory sslEngineFactory, EventSourceHandler eventSourceHandler) { - this(Executors.newSingleThreadExecutor(), DEFAULT_RECONNECTION_TIME_MILLIS, uri, sslEngineFactory, eventSourceHandler, null); + this(Executors.newSingleThreadExecutor(), DEFAULT_RECONNECTION_TIME_MILLIS, uri, null, sslEngineFactory, eventSourceHandler, null); } public EventSource(URI uri, SSLEngineFactory sslEngineFactory, EventSourceHandler eventSourceHandler, Map headers) { - this(Executors.newSingleThreadExecutor(), DEFAULT_RECONNECTION_TIME_MILLIS, uri, sslEngineFactory, eventSourceHandler, headers); + this(Executors.newSingleThreadExecutor(), DEFAULT_RECONNECTION_TIME_MILLIS, uri, null, sslEngineFactory, eventSourceHandler, headers); } + public ChannelFuture connect() { readyState = CONNECTING; - + //To avoid perpetual "SocketUnresolvedException" int port = uri.getPort(); - if (port==-1) - { - port = (uri.getScheme().equals("https"))?443:80; + if (port == -1) { + port = (uri.getScheme().equals("https")) ? 443 : 80; } bootstrap.setOption("remoteAddress", new InetSocketAddress(uri.getHost(), port)); return bootstrap.connect(); @@ -190,10 +201,14 @@ public void onError(Throwable t) { // pass event to the proper handler eventSourceHandler.onError(t); } - + @Override public void onClosed(boolean willReconnect) { // pass event to the proper handler eventSourceHandler.onClosed(willReconnect); } + + public EventSourceHandler getEventSourceHandler(){ + return eventSourceHandler; + } } diff --git a/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/impl/netty/EventSourceChannelHandler.java b/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/impl/netty/EventSourceChannelHandler.java index f59d456..1b6f90b 100644 --- a/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/impl/netty/EventSourceChannelHandler.java +++ b/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/impl/netty/EventSourceChannelHandler.java @@ -38,10 +38,10 @@ public class EventSourceChannelHandler extends SimpleChannelUpstreamHandler impl private final EventSourceHandler eventSourceHandler; private final ClientBootstrap bootstrap; - private final URI uri; private final Map headers; private final EventStreamParser messageDispatcher; + private URI uri, requestUri; private final Timer timer = new HashedWheelTimer(); private Channel channel; private boolean reconnectOnClose = true; @@ -52,6 +52,11 @@ public class EventSourceChannelHandler extends SimpleChannelUpstreamHandler impl private Integer status; private AtomicBoolean reconnecting = new AtomicBoolean(false); + public EventSourceChannelHandler(EventSourceHandler eventSourceHandler, long reconnectionTimeMillis, ClientBootstrap bootstrap, URI uri, URI requestUri, Map headers){ + this(eventSourceHandler, reconnectionTimeMillis, bootstrap,uri, headers); + this.requestUri = requestUri; + } + public EventSourceChannelHandler(EventSourceHandler eventSourceHandler, long reconnectionTimeMillis, ClientBootstrap bootstrap, URI uri, Map headers) { this.eventSourceHandler = eventSourceHandler; this.reconnectionTimeMillis = reconnectionTimeMillis; @@ -68,7 +73,17 @@ public void handleUpstream(ChannelHandlerContext ctx, ChannelEvent e) throws Exc @Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - HttpRequest request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, uri.toString()); + + //URI uri2 = new URI(uri.toString().substring(uri.toString().lastIndexOf("/http"))) ; + HttpRequest request; + + if(requestUri != null){ + request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/"+requestUri.toString()); + } + else { + request = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, uri.toString()); + } + request.addHeader(Names.ACCEPT, "text/event-stream"); if (headers != null) { @@ -76,9 +91,8 @@ public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) thr request.addHeader(entry.getKey(), entry.getValue()); } } - request.addHeader(Names.HOST, uri.getHost()); - request.addHeader(Names.ORIGIN, uri.getScheme()+"://" + uri.getHost()); + request.addHeader(Names.ORIGIN, uri.getScheme() + "://" + uri.getHost()); request.addHeader(Names.CACHE_CONTROL, "no-cache"); if (lastEventId != null) { request.addHeader("Last-Event-ID", lastEventId); @@ -94,7 +108,7 @@ public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) @Override public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { - eventSourceHandler.onClosed(reconnectOnClose); + eventSourceHandler.onClosed(reconnectOnClose); if (reconnectOnClose) { reconnect(); } @@ -138,7 +152,7 @@ public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Ex @Override public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception { Throwable error = e.getCause(); - if(error instanceof ConnectException) { + if (error instanceof ConnectException) { error = new EventSourceException("Failed to connect to " + uri, error); } eventSourceHandler.onError(error); @@ -170,15 +184,15 @@ public EventSourceChannelHandler join() throws InterruptedException { } private void reconnect() { - if(!reconnecting.get()) { + if (!reconnecting.get()) { reconnecting.set(true); timer.newTimeout(new TimerTask() { @Override public void run(Timeout timeout) throws Exception { reconnecting.set(false); int port = uri.getPort(); - if (port==-1) { - port = (uri.getScheme().equals("https"))?443:80; + if (port == -1) { + port = (uri.getScheme().equals("https")) ? 443 : 80; } bootstrap.setOption("remoteAddress", new InetSocketAddress(uri.getHost(), port)); bootstrap.connect().await(); From ed55e45a9ec35865b3f60b864cd6e0b0a3004da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20BURDY?= Date: Mon, 10 Aug 2015 14:08:03 +0200 Subject: [PATCH 2/9] Readme update --- .gitignore | 4 +- .idea/compiler.xml | 5 +- .../{tylerroach.xml => fburdy.xml} | 2 +- .idea/encodings.xml | 5 - .idea/gradle.xml | 7 +- .idea/misc.xml | 101 +++--------------- .idea/modules.xml | 3 +- .idea/scopes/scope_settings.xml | 5 - .idea/vcs.xml | 5 +- README.md | 4 +- README.md~ | 66 ++++++++++++ eventsource_android/eventsource_android.iml | 10 +- .../src/main/AndroidManifest.xml | 13 ++- .../src/main/res/layout/activity_main.xml | 12 +++ .../src/main/res/menu/menu_main.xml | 6 ++ .../src/main/res/values-w820dp/dimens.xml | 6 ++ .../src/main/res/values/dimens.xml | 5 + .../src/main/res/values/strings.xml | 7 ++ 18 files changed, 147 insertions(+), 119 deletions(-) rename .idea/dictionaries/{tylerroach.xml => fburdy.xml} (60%) delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/scopes/scope_settings.xml create mode 100644 README.md~ create mode 100644 eventsource_android/src/main/res/layout/activity_main.xml create mode 100644 eventsource_android/src/main/res/menu/menu_main.xml create mode 100644 eventsource_android/src/main/res/values-w820dp/dimens.xml create mode 100644 eventsource_android/src/main/res/values/dimens.xml create mode 100644 eventsource_android/src/main/res/values/strings.xml diff --git a/.gitignore b/.gitignore index afbdab3..d4a56c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ .gradle -/local.properties -/.idea/workspace.xml +.idea /.idea/libraries +local.properties .DS_Store /build diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 217af47..96cc43e 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,7 +1,6 @@ - - - + \ No newline at end of file diff --git a/.idea/dictionaries/tylerroach.xml b/.idea/dictionaries/fburdy.xml similarity index 60% rename from .idea/dictionaries/tylerroach.xml rename to .idea/dictionaries/fburdy.xml index 67c3042..ed70e77 100644 --- a/.idea/dictionaries/tylerroach.xml +++ b/.idea/dictionaries/fburdy.xml @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index e206d70..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 696fee6..b9d2900 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,9 +3,9 @@ - - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d7b2b96..049a973 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,11 +1,15 @@ - - - + + + @@ -16,7 +20,7 @@ - Abstraction issues + Android @@ -32,87 +36,11 @@ - + - - - - - - - - - - - - - - - - - - - - - localhost - 5050 - + + @@ -122,7 +50,7 @@ @@ -133,7 +61,7 @@ @@ -141,5 +69,4 @@ - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 7d7c4cf..ea0fd12 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -6,5 +6,4 @@ - - + \ No newline at end of file diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b..0000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml index def6a6a..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,7 +1,6 @@ - + - - + \ No newline at end of file diff --git a/README.md b/README.md index c1ee7e6..bb8dc8f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ # eventsource-android An Android EventSource (SSE) Library -This is a Java implementation of the EventSource - a client for Server-Sent Events. The implementation is based on Netty +This is a Java implementation of the EventSource - a client for Server-Sent Events. The implementation is based on Netty. + This project is based of off EventSource-Java: https://github.com/aslakhellesoy/eventsource-java @@ -21,6 +22,7 @@ Example implementation: public void run() { try { eventSource = new EventSource(Uri, new SSEHandler(), extraHeaderParameters); + /* eventSource = new EventSource(UriProxy, UriApi, new SSEHandler(), extraHeaderParameters)*/ eventSource.connect(); } catch(URISyntaxException e) { Log.v("Error starting eventsource", "True"); diff --git a/README.md~ b/README.md~ new file mode 100644 index 0000000..c1ee7e6 --- /dev/null +++ b/README.md~ @@ -0,0 +1,66 @@ +# eventsource-android + +An Android EventSource (SSE) Library +This is a Java implementation of the EventSource - a client for Server-Sent Events. The implementation is based on Netty + +This project is based of off EventSource-Java: +https://github.com/aslakhellesoy/eventsource-java +https://github.com/TomMettam/eventsource-java + +One addition made to the original source is that headers can now be passed in the method to include authorization tokens, etc in the request. + +Note: +In order to use eventsource, you must create and connect the event source from a separate thread. + +I've packaged the code into an android library. Just assembleRelease in gradle to create the neccessary AAR file. In the near future, I will upload the library to jcenter. + +Example implementation: + + Thread eventThread = new Thread(new Runnable() { + @Override + public void run() { + try { + eventSource = new EventSource(Uri, new SSEHandler(), extraHeaderParameters); + eventSource.connect(); + } catch(URISyntaxException e) { + Log.v("Error starting eventsource", "True"); + } + } + }); + } + eventThread.start(); + + + private class SSEHandler implements EventSourceHandler { + + public SSEHandler() { + } + + @Override + public void onConnect() { + Log.v("SSE Connected", "True"); + } + + @Override + public void onMessage(String event, MessageEvent message) { + Log.v("SSE Message", event); + Log.v("SSE Message: ", message.lastEventId); + Log.v("SSE Message: ", message.data); + } + + @Override + public void onError(Throwable t) { + Log.v("SSE Error", "True"); + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + t.printStackTrace(pw); + Log.v("SSE Stacktrace", sw.toString()); + + } + + @Override + public void onClosed(boolean willReconnect) { + Log.v("SSE Closed", "reconnect? " + willReconnect); + } + +To stop event source, make sure to run eventSource.close(), as well as remove the handler and thread instance. diff --git a/eventsource_android/eventsource_android.iml b/eventsource_android/eventsource_android.iml index cf8db6e..28ff771 100644 --- a/eventsource_android/eventsource_android.iml +++ b/eventsource_android/eventsource_android.iml @@ -1,5 +1,5 @@ - + @@ -9,10 +9,12 @@ + @@ -89,5 +92,4 @@ - - + \ No newline at end of file diff --git a/eventsource_android/src/main/AndroidManifest.xml b/eventsource_android/src/main/AndroidManifest.xml index 971aff4..4803636 100644 --- a/eventsource_android/src/main/AndroidManifest.xml +++ b/eventsource_android/src/main/AndroidManifest.xml @@ -1,8 +1,17 @@ + + package="tylerjroach.com.eventsource_android" > - + + + + + + + diff --git a/eventsource_android/src/main/res/layout/activity_main.xml b/eventsource_android/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..06f6848 --- /dev/null +++ b/eventsource_android/src/main/res/layout/activity_main.xml @@ -0,0 +1,12 @@ + + + + + diff --git a/eventsource_android/src/main/res/menu/menu_main.xml b/eventsource_android/src/main/res/menu/menu_main.xml new file mode 100644 index 0000000..a212461 --- /dev/null +++ b/eventsource_android/src/main/res/menu/menu_main.xml @@ -0,0 +1,6 @@ +

+ + diff --git a/eventsource_android/src/main/res/values-w820dp/dimens.xml b/eventsource_android/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/eventsource_android/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ + + + 64dp + diff --git a/eventsource_android/src/main/res/values/dimens.xml b/eventsource_android/src/main/res/values/dimens.xml new file mode 100644 index 0000000..47c8224 --- /dev/null +++ b/eventsource_android/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + + 16dp + 16dp + diff --git a/eventsource_android/src/main/res/values/strings.xml b/eventsource_android/src/main/res/values/strings.xml new file mode 100644 index 0000000..bddd68f --- /dev/null +++ b/eventsource_android/src/main/res/values/strings.xml @@ -0,0 +1,7 @@ + + MainActivity + + Hello world! + Settings + + From bc9f0f59ba751deb5e6e7c525198e0547992bf4e Mon Sep 17 00:00:00 2001 From: streamdataio Date: Fri, 18 Sep 2015 10:52:37 +0200 Subject: [PATCH 3/9] add finalize to eventSource Better handling of resource cleanup. --- .../tylerjroach/com/eventsource_android/EventSource.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java b/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java index b60c879..75f285f 100644 --- a/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java +++ b/eventsource_android/src/main/java/tylerjroach/com/eventsource_android/EventSource.java @@ -211,4 +211,11 @@ public void onClosed(boolean willReconnect) { public EventSourceHandler getEventSourceHandler(){ return eventSourceHandler; } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + + bootstrap.getFactory().releaseExternalResources(); + } } From abd0d2f62fc2de4b68dd69b85f0c8d9fc28c483a Mon Sep 17 00:00:00 2001 From: fzanaroli Date: Fri, 2 Oct 2015 15:07:23 +0200 Subject: [PATCH 4/9] Handle http chunks with server-sent event --- eventsource_android/eventsource_android.iml | 12 +- .../com/eventsource_android/EventSource.java | 25 ++-- .../EventSourceHandler.java | 3 + .../com/eventsource_android/MessageEvent.java | 3 +- .../eventsource_android/SSLEngineFactory.java | 32 ++-- .../impl/AsyncEventSourceHandler.java | 7 +- .../impl/ConnectionHandler.java | 1 + .../impl/netty/EventSourceChannelHandler.java | 138 +++++++++++++----- .../stubs/StubHandler.java | 26 ++-- 9 files changed, 162 insertions(+), 85 deletions(-) diff --git a/eventsource_android/eventsource_android.iml b/eventsource_android/eventsource_android.iml index 28ff771..66c04d4 100644 --- a/eventsource_android/eventsource_android.iml +++ b/eventsource_android/eventsource_android.iml @@ -12,20 +12,22 @@ + + + + diff --git a/eventsource-android.iml b/eventsource-android.iml index 9835b86..ab41ce8 100644 --- a/eventsource-android.iml +++ b/eventsource-android.iml @@ -8,9 +8,7 @@ - - - + diff --git a/eventsource_android/eventsource_android.iml b/eventsource_android/eventsource_android.iml index 66c04d4..431f96a 100644 --- a/eventsource_android/eventsource_android.iml +++ b/eventsource_android/eventsource_android.iml @@ -12,11 +12,8 @@ - @@ -65,22 +61,15 @@ + - - - - - - - -