Skip to content

Commit bcf3f15

Browse files
committed
feat: implement relationships lookup
1 parent 68779f9 commit bcf3f15

2 files changed

Lines changed: 21 additions & 15 deletions

File tree

bridge/bridge.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,10 @@ type UserRelationship struct {
213213
ScreenName string `json:"screen_name" xml:"screen_name"`
214214
}
215215

216+
type UserRelationships struct {
217+
Relationships []UserRelationship `json:"relationship" xml:"relationship"`
218+
}
219+
216220
// Bluesky's API returns a letter ID for each user,
217221
// While twitter uses a numeric ID, meaning we
218222
// need to convert between the two
@@ -367,21 +371,13 @@ func XMLEncoder(data interface{}, oldHeaderName string, newHeaderName string) (*
367371

368372
// Remove the root element and replace with custom header
369373
xmlContent := buf.Bytes()
370-
fmt.Println(string(xmlContent))
371-
start := bytes.Index(xmlContent, []byte("<"+oldHeaderName+">"))
372-
end := bytes.LastIndex(xmlContent, []byte("</"+oldHeaderName+">"))
373-
if start == -1 || end == -1 {
374-
return nil, fmt.Errorf("invalid XML format")
375-
}
376-
xmlContent = xmlContent[start+len("<"+oldHeaderName+">") : end]
377374

378-
// Add custom XML header and root element
379-
customHeader := []byte(`<?xml version="1.0" encoding="UTF-8"?>` + "\n" + `<` + newHeaderName + `>` + "\n")
380-
xmlContent = append(customHeader, xmlContent...)
375+
xmlContent = bytes.ReplaceAll(xmlContent, []byte("<"+oldHeaderName+">"), []byte("<"+newHeaderName+">"))
376+
xmlContent = bytes.ReplaceAll(xmlContent, []byte("</"+oldHeaderName+">"), []byte("</"+newHeaderName+">"))
381377

382-
// Add custom footer
383-
customFooter := []byte("\n</" + newHeaderName + ">")
384-
xmlContent = append(xmlContent, customFooter...)
378+
// Add custom XML header
379+
customHeader := []byte(`<?xml version="1.0" encoding="UTF-8"?>`)
380+
xmlContent = append(customHeader, xmlContent...)
385381

386382
result := string(xmlContent)
387383
return &result, nil

twitterv1/user.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,25 @@ func UserRelationships(c *fiber.Ctx) error {
153153
}(),
154154
ScreenName: user.Handle,
155155
ID: encodedUserId,
156+
IDStr: encodedUserId.String(),
156157
Connections: connections,
157158
})
158159
}
159160

160-
xml, err := bridge.XMLEncoder(relationships, "UserRelationship", "relationship")
161+
// i hate xml
161162

163+
root := bridge.UserRelationships{
164+
Relationships: relationships,
165+
}
166+
167+
xml, err := bridge.XMLEncoder(root, "UserRelationships", "relationships")
162168
if err != nil {
163169
fmt.Println("Error:", err)
164170
return c.Status(fiber.StatusInternalServerError).SendString("Failed to encode user relationships")
165171
}
166-
return c.SendString(*xml)
172+
173+
newXml := strings.ReplaceAll(*xml, "<UserRelationship>", "<relationship>")
174+
newXml = strings.ReplaceAll(newXml, "</UserRelationship>", "</relationship>")
175+
176+
return c.SendString(newXml)
167177
}

0 commit comments

Comments
 (0)