aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/twitter/task/Users.kt
blob: a2454003b78282cf13c5ca9e21aec95352a142f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package net.lacolaco.smileessence.twitter.task

import net.lacolaco.smileessence.data.Account
import net.lacolaco.smileessence.entity.User
import net.lacolaco.smileessence.util.BackgroundTask
import twitter4j.Relationship

class Users {
    class GetTask : BackgroundTask<User, Void> {
        private val account: Account
        private val userID: Long
        private val screenName: String?

        constructor(account: Account, userID: Long) {
            this.account = account
            this.userID = userID
            this.screenName = null
        }

        constructor(account: Account, screenName: String) {
            this.account = account
            this.screenName = screenName
            this.userID = -1
        }

        override fun doInBackground(): User {
            return if (screenName != null) {
                User.fromTwitter(account.twitter.users().showUser(screenName))
            } else {
                User.fromTwitter(account.twitter.users().showUser(userID))
            }
        }
    }

    class GetManyTask(private val account: Account) : BackgroundTask<List<String>, Void>() {
        override fun doInBackground(): List<String> {
            return account.twitter.list().getUserLists(account.userId).map { it.fullName }
        }
    }

    class FollowTask(private val account: Account, private val userID: Long) : BackgroundTask<User, Void>() {
        override fun doInBackground(): User {
            return User.fromTwitter(account.twitter.friendsFollowers().createFriendship(userID))
        }
    }

    class UnfollowTask(private val account: Account, private val userID: Long) : BackgroundTask<User, Void>() {
        override fun doInBackground(): User {
            return User.fromTwitter(account.twitter.friendsFollowers().destroyFriendship(userID))
        }
    }

    class BlockTask(private val account: Account, private val userID: Long) : BackgroundTask<User, Void>() {
        override fun doInBackground(): User {
            return User.fromTwitter(account.twitter.users().createBlock(userID))
        }
    }

    class ReportForSpamTask(private val account: Account, private val userID: Long) : BackgroundTask<User, Void>() {
        override fun doInBackground(): User {
            return User.fromTwitter(account.twitter.spamReporting().reportSpam(userID))
        }
    }

    class UnblockTask(private val account: Account, private val userID: Long) : BackgroundTask<User, Void>() {
        override fun doInBackground(): User {
            return User.fromTwitter(account.twitter.users().destroyBlock(userID))
        }
    }

    class ShowFriendshipTask(private val account: Account, private val userID: Long) : BackgroundTask<Relationship, Void>() {
        override fun doInBackground(): Relationship {
            return account.twitter.friendsFollowers().showFriendship(account.twitter.id, userID)
        }
    }
}