Skip to content

Commit 71b2fb1

Browse files
committed
Map bridge types to cloud names
1 parent 968f820 commit 71b2fb1

3 files changed

Lines changed: 28 additions & 3 deletions

File tree

cmd/bbctl/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ func doGenerateBridgeConfig(ctx *cli.Context, bridge string) (*generatedBridgeCo
235235
existingBridge, ok := whoami.User.Bridges[bridge]
236236
var bridgeType string
237237
if ok && existingBridge.BridgeState.BridgeType != "" {
238-
bridgeType = existingBridge.BridgeState.BridgeType
238+
bridgeType = toInternalBridgeType(existingBridge.BridgeState.BridgeType)
239239
} else {
240240
bridgeType, err = guessOrAskBridgeType(bridge, ctx.String("type"))
241241
if err != nil {

cmd/bbctl/register.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package main
22

33
import (
4+
"cmp"
45
"encoding/json"
56
"fmt"
67
"os"
@@ -69,6 +70,29 @@ type RegisterJSON struct {
6970
YourUserID id.UserID `json:"your_user_id"`
7071
}
7172

73+
var registerBridgeTypeMap = map[string]string{
74+
"slack": "slackgo",
75+
"discord": "discordgo",
76+
"instagram": "instagramgo",
77+
"facebook": "facebookgo",
78+
}
79+
80+
var reverseRegisterBridgeTypeMap = make(map[string]string, len(registerBridgeTypeMap))
81+
82+
func init() {
83+
for k, v := range registerBridgeTypeMap {
84+
reverseRegisterBridgeTypeMap[v] = k
85+
}
86+
}
87+
88+
func toInternalBridgeType(typeName string) string {
89+
return cmp.Or(reverseRegisterBridgeTypeMap[typeName], typeName)
90+
}
91+
92+
func toCloudBridgeType(typeName string) string {
93+
return cmp.Or(registerBridgeTypeMap[typeName], typeName)
94+
}
95+
7296
func doRegisterBridge(ctx *cli.Context, bridge, bridgeType string, onlyGet bool) (*RegisterJSON, error) {
7397
whoami, err := getCachedWhoami(ctx)
7498
if err != nil {
@@ -107,6 +131,7 @@ func doRegisterBridge(ctx *cli.Context, bridge, bridgeType string, onlyGet bool)
107131
// Remove the explicit bot user namespace (same as sender_localpart)
108132
resp.Namespaces.UserIDs = resp.Namespaces.UserIDs[0:1]
109133

134+
bridgeType = toCloudBridgeType(bridgeType)
110135
state := status.StateRunning
111136
if (bridgeType != "" && bridgeType != "heisenbridge") || bridge == "androidsms" || bridge == "imessagecloud" || bridge == "imessage" {
112137
state = status.StateStarting

cmd/bbctl/run.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,13 @@ func runBridge(ctx *cli.Context) error {
270270
if !ok || existingBridge.BridgeState.BridgeType == "" {
271271
log.Printf("Existing bridge type not found, falling back to generating new config")
272272
doWriteConfig = true
273-
} else if reg, err := doRegisterBridge(ctx, bridgeName, existingBridge.BridgeState.BridgeType, true); err != nil {
273+
} else if reg, err := doRegisterBridge(ctx, bridgeName, toInternalBridgeType(existingBridge.BridgeState.BridgeType), true); err != nil {
274274
log.Printf("Failed to get existing bridge registration: %v", err)
275275
log.Printf("Falling back to generating new config")
276276
doWriteConfig = true
277277
} else {
278278
cfg = &generatedBridgeConfig{
279-
BridgeType: existingBridge.BridgeState.BridgeType,
279+
BridgeType: toInternalBridgeType(existingBridge.BridgeState.BridgeType),
280280
RegisterJSON: reg,
281281
}
282282
}

0 commit comments

Comments
 (0)