aboutsummaryrefslogtreecommitdiff
path: root/webfinger
diff options
context:
space:
mode:
Diffstat (limited to 'webfinger')
-rw-r--r--webfinger/comm.go70
-rw-r--r--webfinger/webfinger.go35
2 files changed, 105 insertions, 0 deletions
diff --git a/webfinger/comm.go b/webfinger/comm.go
new file mode 100644
index 0000000..dd25cb4
--- /dev/null
+++ b/webfinger/comm.go
@@ -0,0 +1,70 @@
+package webfinger
+
+import (
+ "encoding/json"
+ "errors"
+ "io/ioutil"
+ "net/http"
+
+ "github.com/FChannel0/FChannel-Server/activitypub"
+ "github.com/FChannel0/FChannel-Server/config"
+ "github.com/FChannel0/FChannel-Server/util"
+)
+
+// TODO: All of these functions in this file I don't know where to place so they'll remain here until I find a better place for them.
+
+func GetActorCollection(collection string) (activitypub.Collection, error) {
+ var nCollection activitypub.Collection
+
+ if collection == "" {
+ return nCollection, errors.New("invalid collection")
+ }
+
+ req, err := http.NewRequest("GET", collection, nil)
+ if err != nil {
+ return nCollection, err
+ }
+
+ req.Header.Set("Accept", config.ActivityStreams)
+
+ resp, err := util.RouteProxy(req)
+ if err != nil {
+ return nCollection, err
+ }
+
+ defer resp.Body.Close()
+
+ if resp.StatusCode == 200 {
+ body, _ := ioutil.ReadAll(resp.Body)
+
+ if len(body) > 0 {
+ if err := json.Unmarshal(body, &nCollection); err != nil {
+ return nCollection, err
+ }
+ }
+ }
+
+ return nCollection, nil
+}
+
+func GetCollectionFromReq(path string) (activitypub.Collection, error) {
+ var respCollection activitypub.Collection
+
+ req, err := http.NewRequest("GET", path, nil)
+ if err != nil {
+ return respCollection, err
+ }
+
+ req.Header.Set("Accept", config.ActivityStreams)
+
+ resp, err := util.RouteProxy(req)
+ if err != nil {
+ return respCollection, err
+ }
+ defer resp.Body.Close()
+
+ body, _ := ioutil.ReadAll(resp.Body)
+
+ err = json.Unmarshal(body, &respCollection)
+ return respCollection, err
+}
diff --git a/webfinger/webfinger.go b/webfinger/webfinger.go
index ffe7c6d..9e8d67d 100644
--- a/webfinger/webfinger.go
+++ b/webfinger/webfinger.go
@@ -4,6 +4,7 @@ import (
"encoding/json"
"io/ioutil"
"net/http"
+ "regexp"
"strings"
"github.com/FChannel0/FChannel-Server/activitypub"
@@ -143,3 +144,37 @@ func FingerRequest(actor string, instance string) (*http.Response, error) {
return resp, nil
}
+
+func CheckValidActivity(id string) (activitypub.Collection, bool, error) {
+ var respCollection activitypub.Collection
+
+ re := regexp.MustCompile(`.+\.onion(.+)?`)
+ if re.MatchString(id) {
+ id = strings.Replace(id, "https", "http", 1)
+ }
+
+ req, err := http.NewRequest("GET", id, nil)
+ if err != nil {
+ return respCollection, false, err
+ }
+
+ req.Header.Set("Accept", config.ActivityStreams)
+
+ resp, err := util.RouteProxy(req)
+ if err != nil {
+ return respCollection, false, err
+ }
+ defer resp.Body.Close()
+
+ body, _ := ioutil.ReadAll(resp.Body)
+
+ if err := json.Unmarshal(body, &respCollection); err != nil {
+ return respCollection, false, err
+ }
+
+ if respCollection.AtContext.Context == "https://www.w3.org/ns/activitystreams" && respCollection.OrderedItems[0].Id != "" {
+ return respCollection, true, nil
+ }
+
+ return respCollection, false, nil
+}