From 24c1173a02e32da9315209281f7a05919c7a90d4 Mon Sep 17 00:00:00 2001 From: fseve Date: Wed, 29 Jun 2022 15:50:42 -0500 Subject: [PATCH 1/2] (android) add the ability to configure proxying http calls --- README.md | 6 ++--- .../CapacitorSegmentPlugin.java | 22 ++++++++++++++++++- src/definitions.ts | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 21f0041..90c942d 100644 --- a/README.md +++ b/README.md @@ -44,9 +44,9 @@ npx cap sync initialize(options: InitializeOptions) => any ``` -| Param | Type | -| ------------- | ------------------------------------------------------------------------------------ | -| **`options`** | { key: string; trackLifecycle?: boolean; recordScreenViews?: boolean; } | +| Param | Type | +| ------------- | -------------------------------------------------------------------------------------------------------- | +| **`options`** | { key: string; trackLifecycle?: boolean; recordScreenViews?: boolean; proxyHost?: string; } | **Returns:** any diff --git a/android/src/main/java/com/joinflux/flux/capacitorsegment/CapacitorSegmentPlugin.java b/android/src/main/java/com/joinflux/flux/capacitorsegment/CapacitorSegmentPlugin.java index 1fa51a7..0338070 100644 --- a/android/src/main/java/com/joinflux/flux/capacitorsegment/CapacitorSegmentPlugin.java +++ b/android/src/main/java/com/joinflux/flux/capacitorsegment/CapacitorSegmentPlugin.java @@ -7,13 +7,18 @@ import com.getcapacitor.annotation.CapacitorPlugin; import android.content.Context; +import android.net.Uri; import android.util.Log; import com.segment.analytics.Analytics; import com.segment.analytics.Analytics.Builder; +import com.segment.analytics.ConnectionFactory; import com.segment.analytics.Options; import com.segment.analytics.Properties; import com.segment.analytics.Traits; +import java.io.IOException; +import java.net.HttpURLConnection; + @CapacitorPlugin(name = "CapacitorSegment") public class CapacitorSegmentPlugin extends Plugin { private boolean initialized = false; @@ -32,7 +37,22 @@ public void initialize(PluginCall call) { } Context context = this.getContext(); - Builder builder = new Analytics.Builder(context, key); + + Builder builder; + String proxyHost = call.getString("proxyHost"); + + if (proxyHost == null) { + builder = new Analytics.Builder(context, key); + } else { + builder = new Analytics.Builder(context, key).connectionFactory(new ConnectionFactory() { + @Override + protected HttpURLConnection openConnection(String url) throws IOException { + String path = Uri.parse(url).getPath(); + return super.openConnection(proxyHost + path); + } + }); + } + Boolean trackLifecycle = call.getBoolean("trackLifecycle", false); if (trackLifecycle) { builder.trackApplicationLifecycleEvents().experimentalUseNewLifecycleMethods(false); diff --git a/src/definitions.ts b/src/definitions.ts index 03dc6f8..6db6497 100644 --- a/src/definitions.ts +++ b/src/definitions.ts @@ -10,6 +10,7 @@ export type InitializeOptions = { key: string; trackLifecycle?: boolean; recordScreenViews?: boolean; + proxyHost?: string; }; export type Identity = { userId: string }; From 84aa6da04a15ceaa15965c0b2fcc9a0c3e07ab68 Mon Sep 17 00:00:00 2001 From: Luis Rhenals Date: Tue, 14 Mar 2023 11:13:34 -0500 Subject: [PATCH 2/2] Add hostname web --- src/web.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/web.ts b/src/web.ts index d19761a..276d5f6 100644 --- a/src/web.ts +++ b/src/web.ts @@ -2,7 +2,7 @@ import { WebPlugin } from '@capacitor/core'; import type { CapacitorSegmentPlugin, IdentifyOptions, InitializeOptions, PageOptions, TrackOptions } from './definitions'; -const getSegmentScript = (key: string) => `!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e `!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e { - await this.loadScript('segment', getSegmentScript(options.key)); + await this.loadScript('segment', getSegmentScript(options.key, options?.proxyHost)); } async identify(options: IdentifyOptions): Promise {