aboutsummaryrefslogtreecommitdiff
path: root/Follow.go
diff options
context:
space:
mode:
Diffstat (limited to 'Follow.go')
-rw-r--r--Follow.go222
1 files changed, 0 insertions, 222 deletions
diff --git a/Follow.go b/Follow.go
deleted file mode 100644
index 667c6bd..0000000
--- a/Follow.go
+++ /dev/null
@@ -1,222 +0,0 @@
-package main
-
-import "net/http"
-import "database/sql"
-import _ "github.com/lib/pq"
-import "encoding/json"
-
-func GetActorFollowing(w http.ResponseWriter, db *sql.DB, id string) {
- var following Collection
-
- following.AtContext.Context = "https://www.w3.org/ns/activitystreams"
- following.Type = "Collection"
- following.TotalItems, _ = GetActorFollowTotal(db, id)
- following.Items = GetActorFollowingDB(db, id)
-
- enc, _ := json.MarshalIndent(following, "", "\t")
- w.Header().Set("Content-Type", activitystreams)
- w.Write(enc)
-}
-
-func GetActorFollowers(w http.ResponseWriter, db *sql.DB, id string) {
- var following Collection
-
- following.AtContext.Context = "https://www.w3.org/ns/activitystreams"
- following.Type = "Collection"
- _, following.TotalItems = GetActorFollowTotal(db, id)
- following.Items = GetActorFollowDB(db, id)
-
- enc, _ := json.MarshalIndent(following, "", "\t")
- w.Header().Set("Content-Type", activitystreams)
- w.Write(enc)
-}
-
-
-func GetActorFollowingDB(db *sql.DB, id string) []ObjectBase {
- var followingCollection []ObjectBase
- query := `select following from following where id=$1`
-
- rows, err := db.Query(query, id)
-
- CheckError(err, "error with following db query")
-
- defer rows.Close()
-
- for rows.Next() {
- var obj ObjectBase
-
- err := rows.Scan(&obj.Id)
-
- CheckError(err, "error with following db scan")
-
- followingCollection = append(followingCollection, obj)
- }
-
- return followingCollection
-}
-
-func GetActorFollowDB(db *sql.DB, id string) []ObjectBase {
- var followerCollection []ObjectBase
-
- query := `select follower from follower where id=$1`
-
- rows, err := db.Query(query, id)
-
- CheckError(err, "error with follower db query")
-
- defer rows.Close()
-
- for rows.Next() {
- var obj ObjectBase
-
- err := rows.Scan(&obj.Id)
-
- CheckError(err, "error with followers db scan")
-
- followerCollection = append(followerCollection, obj)
- }
-
- return followerCollection
-}
-
-func GetActorFollowTotal(db *sql.DB, id string) (int, int) {
- var following int
- var followers int
-
- query := `select count(following) from following where id=$1`
-
- rows, err := db.Query(query, id)
-
- CheckError(err, "error with following total db query")
-
- defer rows.Close()
-
- for rows.Next() {
- err := rows.Scan(&following)
-
- CheckError(err, "error with following total db scan")
- }
-
- query = `select count(follower) from follower where id=$1`
-
- rows, err = db.Query(query, id)
-
- CheckError(err, "error with followers total db query")
-
- defer rows.Close()
-
- for rows.Next() {
- err := rows.Scan(&followers)
-
- CheckError(err, "error with followers total db scan")
- }
-
- return following, followers
-}
-
-func AcceptFollow(activity Activity) Activity {
- var accept Activity
- accept.AtContext.Context = activity.AtContext.Context
- accept.Type = "Accept"
- accept.Actor = activity.Object.Actor
- var nObj ObjectBase
- var nActor Actor
- accept.Object = &nObj
- accept.Object.Actor = &nActor
- accept.Object.Actor = activity.Actor
- var nNested NestedObjectBase
- var mActor Actor
- accept.Object.Object = &nNested
- accept.Object.Object.Actor = &mActor
- accept.Object.Object.Actor = activity.Object.Actor
- accept.Object.Object.Type = "Follow"
- accept.To = append(accept.To, activity.Object.Actor.Id)
-
- return accept
-}
-
-func RejectActivity(activity Activity) Activity {
- var accept Activity
- accept.AtContext.Context = activity.AtContext.Context
- accept.Type = "Reject"
- var nObj ObjectBase
- var nActor Actor
- accept.Object = &nObj
- accept.Object.Actor = &nActor
- accept.Actor = activity.Object.Actor
- accept.Object.Actor = activity.Actor
- var nNested NestedObjectBase
- var mActor Actor
- accept.Object.Object = &nNested
- accept.Object.Object.Actor = &mActor
- accept.Object.Object.Actor = activity.Object.Actor
- accept.Object.Object.Type = "Follow"
- accept.To = append(accept.To, activity.Actor.Id)
-
- return accept
-}
-
-func SetActorFollowerDB(db *sql.DB, activity Activity) Activity {
- var query string
- alreadyFollow := false
- followers := GetActorFollowDB(db, activity.Actor.Id)
-
- for _, e := range followers {
- if e.Id == activity.Object.Actor.Id {
- alreadyFollow = true
- }
- }
- if alreadyFollow {
- query = `delete from follower where id=$1 and follower=$2`
- activity.Summary = activity.Object.Actor.Id + " Unfollow " + activity.Actor.Id
- } else {
- query = `insert into follower (id, follower) values ($1, $2)`
- activity.Summary = activity.Object.Actor.Id + " Follow " + activity.Actor.Id
- }
-
- _, err := db.Exec(query, activity.Actor.Id, activity.Object.Actor.Id)
-
- if CheckError(err, "error with follower db insert/delete") != nil {
- activity.Type = "Reject"
- return activity
- }
-
- activity.Type = "Accept"
- return activity
-}
-
-func SetActorFollowingDB(db *sql.DB, activity Activity) Activity {
- var query string
- alreadyFollow := false
- following := GetActorFollowingDB(db, activity.Object.Actor.Id)
-
- for _, e := range following {
- if e.Id == activity.Actor.Id {
- alreadyFollow = true
- }
- }
-
- if alreadyFollow {
- query = `delete from following where id=$1 and following=$2`
- activity.Summary = activity.Object.Actor.Id + " Unfollowing " + activity.Actor.Id
- if !IsActorLocal(db, activity.Actor.Id) {
- go DeleteActorCache(db, activity.Actor.Id)
- }
- } else {
- query = `insert into following (id, following) values ($1, $2)`
- activity.Summary = activity.Object.Actor.Id + " Following " + activity.Actor.Id
- if !IsActorLocal(db, activity.Actor.Id) {
- go WriteActorToCache(db, activity.Actor.Id)
- }
- }
-
- _, err := db.Exec(query, activity.Object.Actor.Id, activity.Actor.Id)
-
- if CheckError(err, "error with following db insert/delete") != nil {
- activity.Type = "Reject"
- return activity
- }
-
- activity.Type = "Accept"
- return activity
-}