From 6e4fdd58223f64eb5be0931e999c5d76e3029176 Mon Sep 17 00:00:00 2001 From: Siddharth052002 <92661511+Siddharth052002@users.noreply.github.com> Date: Mon, 3 Apr 2023 11:23:00 +0530 Subject: [PATCH 1/5] Replaced Int with Long for some variables (#178) --- .../src/main/kotlin/social/bigbone/api/entity/Account.kt | 6 +++--- .../main/kotlin/social/bigbone/api/entity/InstanceStats.kt | 6 +++--- bigbone/src/main/kotlin/social/bigbone/api/entity/Poll.kt | 6 +++--- bigbone/src/main/kotlin/social/bigbone/api/entity/Status.kt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/bigbone/src/main/kotlin/social/bigbone/api/entity/Account.kt b/bigbone/src/main/kotlin/social/bigbone/api/entity/Account.kt index acd50b6cf..12aabc2dd 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/entity/Account.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/entity/Account.kt @@ -144,19 +144,19 @@ data class Account( * How many statuses are attached to this account. */ @SerializedName("statuses_count") - val statusesCount: Int = 0, + val statusesCount: Long = 0, /** * The reported followers of this profile. */ @SerializedName("followers_count") - val followersCount: Int = 0, + val followersCount: Long = 0, /** * The reported follows of this profile. */ @SerializedName("following_count") - val followingCount: Int = 0 + val followingCount: Long = 0 ) { /** * Specifies a name-value pair as used in [fields] of the [Account] entity. diff --git a/bigbone/src/main/kotlin/social/bigbone/api/entity/InstanceStats.kt b/bigbone/src/main/kotlin/social/bigbone/api/entity/InstanceStats.kt index fe76668a3..2fe19eb1d 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/entity/InstanceStats.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/entity/InstanceStats.kt @@ -11,17 +11,17 @@ data class InstanceStats( * Total users on this instance. */ @SerializedName("user_count") - val userCount: Int = 0, + val userCount: Long = 0, /** * Total statuses on this instance. */ @SerializedName("status_count") - val statusCount: Int = 0, + val statusCount: Long = 0, /** * Total domains discovered by this instance. */ @SerializedName("domain_count") - val domainCount: Int = 0 + val domainCount: Long = 0 ) diff --git a/bigbone/src/main/kotlin/social/bigbone/api/entity/Poll.kt b/bigbone/src/main/kotlin/social/bigbone/api/entity/Poll.kt index b6d4a5c28..d6bfed12f 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/entity/Poll.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/entity/Poll.kt @@ -35,13 +35,13 @@ data class Poll( * How many votes have been received. */ @SerializedName("votes_count") - val votesCount: Int = 0, + val votesCount: Long = 0, /** * How many unique accounts have voted on a multiple-choice poll; integer, or null if [multiple] is false. */ @SerializedName("voters_count") - val votersCount: Int? = null, + val votersCount: Long? = null, /** * Possible answers for the poll. @@ -83,6 +83,6 @@ data class Poll( * The total number of received votes for this option; integer, or null if results are not published yet. */ @SerializedName("votes_count") - val votesCount: Int? = null + val votesCount: Long? = null ) } diff --git a/bigbone/src/main/kotlin/social/bigbone/api/entity/Status.kt b/bigbone/src/main/kotlin/social/bigbone/api/entity/Status.kt index 47dc5bea4..91ff9e217 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/entity/Status.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/entity/Status.kt @@ -90,19 +90,19 @@ data class Status( * How many boosts this status has received. */ @SerializedName("reblogs_count") - val reblogsCount: Int = 0, + val reblogsCount: Long = 0, /** * How many favourites this status has received. */ @SerializedName("favourites_count") - val favouritesCount: Int = 0, + val favouritesCount: Long = 0, /** * How many replies this status has received. */ @SerializedName("replies_count") - val repliesCount: Int = 0, + val repliesCount: Long = 0, /** * A link to the status’s HTML representation. From f87a58df66e85b711741c47fa64f4351684b0dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Gasser?= Date: Tue, 4 Apr 2023 23:59:46 +0200 Subject: [PATCH 2/5] Add category field to CustomEmoji entity. (#183) --- .../main/kotlin/social/bigbone/api/entity/CustomEmoji.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bigbone/src/main/kotlin/social/bigbone/api/entity/CustomEmoji.kt b/bigbone/src/main/kotlin/social/bigbone/api/entity/CustomEmoji.kt index 1b5f30aea..0b2398cca 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/entity/CustomEmoji.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/entity/CustomEmoji.kt @@ -26,5 +26,11 @@ data class CustomEmoji( * Whether this Emoji should be visible in the picker or unlisted. */ @SerializedName("visible_in_picker") - val visibleInPicker: Boolean = true + val visibleInPicker: Boolean = true, + + /** + * Used for sorting custom emoji in the picker. + */ + @SerializedName("category") + val category: String = "" ) From 42597c0967922594cbeef5c78c2a24e357c8af28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Gasser?= Date: Wed, 5 Apr 2023 00:00:17 +0200 Subject: [PATCH 3/5] Updated dependencies (#182) --- gradle/libs.versions.toml | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- sample-java/build.gradle | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 61a85d347..d123ec9eb 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,14 +7,14 @@ gson = "2.10.1" junit-jupiter = "5.9.2" junit-platform-suite-engine = "1.9.2" kluent = "1.72" -kotlin = "1.8.10" +kotlin = "1.8.20" kotlin-coroutines = "1.6.4" mockk = "1.13.4" okhttp = "4.10.0" rxjava = "3.1.6" # Gradle plugins -jacoco = "0.8.8" +jacoco = "0.8.9" dependency-analysis = "1.19.0" detekt = "1.22.0" versions = "0.46.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6b44138a0..86f22c08a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip diff --git a/sample-java/build.gradle b/sample-java/build.gradle index 8ed2191ec..67cc9a0be 100644 --- a/sample-java/build.gradle +++ b/sample-java/build.gradle @@ -15,7 +15,7 @@ dependencies { } pmd { - toolVersion = "6.52.0" + toolVersion = "6.55.0" consoleOutput = true ruleSetFiles = files("${rootProject.projectDir}/config/pmd/ruleset.xml") ruleSets = [] From beea849b0cca5bc7a3e44d9e8c16fc1469283ef3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Gasser?= Date: Wed, 5 Apr 2023 00:00:40 +0200 Subject: [PATCH 4/5] Removed unused dependenceis (#181) --- bigbone/build.gradle | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bigbone/build.gradle b/bigbone/build.gradle index 8860dc31a..9f63a51e8 100644 --- a/bigbone/build.gradle +++ b/bigbone/build.gradle @@ -18,7 +18,6 @@ dependencies { api libs.okhttp api libs.gson implementation libs.kotlin.jdk8 - testImplementation libs.junit.jupiter.api testImplementation libs.kluent testImplementation libs.mockk @@ -26,9 +25,6 @@ dependencies { integrationTestImplementation libs.junit.jupiter.api integrationTestImplementation libs.junit.jupiter.engine integrationTestImplementation libs.junit.platform.suite.engine - integrationTestImplementation 'ch.qos.logback:logback-core:1.4.6' - integrationTestImplementation 'ch.qos.logback:logback-classic:1.4.6' - integrationTestImplementation 'org.slf4j:slf4j-api:2.0.7' } tasks.register('integrationTest', Test) { From 83a2548ab93254a1809471bd7a1d657cb4c26fb6 Mon Sep 17 00:00:00 2001 From: Andreas Date: Thu, 6 Apr 2023 13:08:44 +0200 Subject: [PATCH 5/5] remove redirect URI default value from methods (#185) --- .../kotlin/social/bigbone/rx/RxAppMethods.kt | 2 +- .../social/bigbone/rx/RxOAuthMethods.kt | 4 +- .../kotlin/social/bigbone/TestHelpers.kt | 1 + .../v300/V300StatusMethodsIntegrationTest.kt | 1 + .../v402/V402StatusMethodsIntegrationTest.kt | 1 + .../social/bigbone/api/method/AppMethods.kt | 5 +-- .../social/bigbone/api/method/OAuthMethods.kt | 27 ++++-------- .../kotlin/social/bigbone/TestConstants.kt | 5 +++ .../bigbone/api/method/AppMethodsTest.kt | 9 +++- .../bigbone/api/method/OAuthMethodsTest.kt | 44 ++++++++++++++++--- .../social/bigbone/sample/Authenticator.java | 5 ++- .../social/bigbone/sample/Authenticator.kt | 6 ++- 12 files changed, 73 insertions(+), 37 deletions(-) create mode 100644 bigbone/src/test/kotlin/social/bigbone/TestConstants.kt diff --git a/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxAppMethods.kt b/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxAppMethods.kt index 7cca50077..a37a64390 100644 --- a/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxAppMethods.kt +++ b/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxAppMethods.kt @@ -18,7 +18,7 @@ class RxAppMethods(client: MastodonClient) { @JvmOverloads fun createApp( clientName: String, - redirectUris: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUris: String, scope: Scope = Scope(Scope.Name.ALL), website: String? = null ): Single { diff --git a/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxOAuthMethods.kt b/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxOAuthMethods.kt index 5386eb5b8..c73e16399 100644 --- a/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxOAuthMethods.kt +++ b/bigbone-rx/src/main/kotlin/social/bigbone/rx/RxOAuthMethods.kt @@ -18,7 +18,7 @@ class RxOAuthMethods(client: MastodonClient) { fun getUserAccessTokenWithAuthorizationCodeGrant( clientId: String, clientSecret: String, - redirectUri: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUri: String, code: String ): Single { return Single.create { @@ -35,7 +35,7 @@ class RxOAuthMethods(client: MastodonClient) { clientId: String, clientSecret: String, scope: Scope = Scope(Scope.Name.READ), - redirectUri: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUri: String, username: String, password: String ): Single { diff --git a/bigbone/src/integrationTest/kotlin/social/bigbone/TestHelpers.kt b/bigbone/src/integrationTest/kotlin/social/bigbone/TestHelpers.kt index 3663c7188..45ba95438 100644 --- a/bigbone/src/integrationTest/kotlin/social/bigbone/TestHelpers.kt +++ b/bigbone/src/integrationTest/kotlin/social/bigbone/TestHelpers.kt @@ -38,6 +38,7 @@ object TestHelpers { return client.oauth.getAccessTokenWithClientCredentialsGrant( clientId = application.clientId!!, clientSecret = application.clientSecret!!, + redirectUri = TestConstants.REDIRECT_URI, scope = Scope(Scope.Name.ALL) ).execute() } diff --git a/bigbone/src/integrationTest/kotlin/social/bigbone/v300/V300StatusMethodsIntegrationTest.kt b/bigbone/src/integrationTest/kotlin/social/bigbone/v300/V300StatusMethodsIntegrationTest.kt index 8961adc4a..ed8f7c88b 100644 --- a/bigbone/src/integrationTest/kotlin/social/bigbone/v300/V300StatusMethodsIntegrationTest.kt +++ b/bigbone/src/integrationTest/kotlin/social/bigbone/v300/V300StatusMethodsIntegrationTest.kt @@ -50,6 +50,7 @@ class V300StatusMethodsIntegrationTest { return client.oauth.getAccessTokenWithClientCredentialsGrant( clientId = application.clientId!!, clientSecret = application.clientSecret!!, + redirectUri = TestConstants.REDIRECT_URI, scope = Scope(Scope.Name.ALL) ).execute() } diff --git a/bigbone/src/integrationTest/kotlin/social/bigbone/v402/V402StatusMethodsIntegrationTest.kt b/bigbone/src/integrationTest/kotlin/social/bigbone/v402/V402StatusMethodsIntegrationTest.kt index 433d1534d..141c40f76 100644 --- a/bigbone/src/integrationTest/kotlin/social/bigbone/v402/V402StatusMethodsIntegrationTest.kt +++ b/bigbone/src/integrationTest/kotlin/social/bigbone/v402/V402StatusMethodsIntegrationTest.kt @@ -50,6 +50,7 @@ class V402StatusMethodsIntegrationTest { return client.oauth.getAccessTokenWithClientCredentialsGrant( clientId = application.clientId!!, clientSecret = application.clientSecret!!, + redirectUri = TestConstants.REDIRECT_URI, scope = Scope(Scope.Name.ALL) ).execute() } diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt index 1c0f7139d..0e85d8d25 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/method/AppMethods.kt @@ -15,8 +15,7 @@ class AppMethods(private val client: MastodonClient) { /** * Create a new application to obtain OAuth2 credentials. * @param clientName A name for your application - * @param redirectUris Where the user should be redirected after authorization. Defaults to "urn:ietf:wg:oauth:2.0:oob", - * which will display the authorization code to the user instead of redirecting to a web page. + * @param redirectUris Where the user should be redirected after authorization. * @param scope Space separated list of scopes. Defaults to all scopes. * @param website A URL to the homepage of your app, defaults to null. * @see Mastodon apps API methods #create @@ -24,7 +23,7 @@ class AppMethods(private val client: MastodonClient) { @JvmOverloads fun createApp( clientName: String, - redirectUris: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUris: String, scope: Scope = Scope(Scope.Name.ALL), website: String? = null ): MastodonRequest { diff --git a/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt b/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt index ef7afba73..b4b2a6f0d 100644 --- a/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt +++ b/bigbone/src/main/kotlin/social/bigbone/api/method/OAuthMethods.kt @@ -15,17 +15,14 @@ class OAuthMethods(private val client: MastodonClient) { /** * Returns a URL that can be used to display an authorization form to the user. If approved, * it will create and return an authorization code, then redirect to the desired redirectUri, - * or show the authorization code if urn:ietf:wg:oauth:2.0:oob was requested. + * or show the authorization code if redirectUri is "urn:ietf:wg:oauth:2.0:oob". * The authorization code can be used while requesting a token to obtain access to user-level methods. * @param clientId The client ID, obtained during app registration. * @param scope List of requested OAuth scopes, separated by spaces. Must be a subset of scopes declared during app registration. - * @param redirectUri Set a URI to redirect the user to. Defaults to "urn:ietf:wg:oauth:2.0:oob", - * which will display the authorization code to the user instead of redirecting to a web page. - * Must match one of the redirect_uris declared during app registration. + * @param redirectUri Set a URI to redirect the user to. Must match one of the redirect_uris declared during app registration. * @see Mastodon oauth API methods #authorize */ - @JvmOverloads - fun getOAuthUrl(clientId: String, scope: Scope, redirectUri: String = "urn:ietf:wg:oauth:2.0:oob"): String { + fun getOAuthUrl(clientId: String, scope: Scope, redirectUri: String): String { val endpoint = "oauth/authorize" val params = Parameters() .append("client_id", clientId) @@ -39,17 +36,14 @@ class OAuthMethods(private val client: MastodonClient) { * Obtain a user access token using OAuth 2 authorization code grant type. To be used during API calls that are not public. * @param clientId The client ID, obtained during app registration. * @param clientSecret The client secret, obtained during app registration. - * @param redirectUri Set a URI to redirect the user to. Defaults to "urn:ietf:wg:oauth:2.0:oob", - * which will display the authorization code to the user instead of redirecting to a web page. - * Must match one of the redirect_uris declared during app registration. + * @param redirectUri Set a URI to redirect the user to. Must match one of the redirect_uris declared during app registration. * @param code A user authorization code, obtained via the URL received from getOAuthUrl() * @see Mastodon oauth API methods #token */ - @JvmOverloads fun getUserAccessTokenWithAuthorizationCodeGrant( clientId: String, clientSecret: String, - redirectUri: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUri: String, code: String ): MastodonRequest { return client.getMastodonRequest( @@ -69,9 +63,7 @@ class OAuthMethods(private val client: MastodonClient) { * Obtain an access token using OAuth 2 client credentials grant type. To be used during API calls that are not public. * @param clientId The client ID, obtained during app registration. * @param clientSecret The client secret, obtained during app registration. - * @param redirectUri Set a URI to redirect the user to. Defaults to "urn:ietf:wg:oauth:2.0:oob", - * which will display the authorization code to the user instead of redirecting to a web page. - * Must match one of the redirect_uris declared during app registration. + * @param redirectUri Set a URI to redirect the user to. Must match one of the redirect_uris declared during app registration. * @param scope Requested OAuth scopes. Must be a subset of scopes declared during app registration. * If not provided, defaults to read. * @see Mastodon oauth API methods #token @@ -81,7 +73,7 @@ class OAuthMethods(private val client: MastodonClient) { fun getAccessTokenWithClientCredentialsGrant( clientId: String, clientSecret: String, - redirectUri: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUri: String, scope: Scope? = null ): MastodonRequest { return client.getMastodonRequest( @@ -105,8 +97,7 @@ class OAuthMethods(private val client: MastodonClient) { * @param clientId The client ID, obtained during app registration. * @param clientSecret The client secret, obtained during app registration. * @param scope Requested OAuth scopes - * @param redirectUri Set a URI to redirect the user to. Defaults to "urn:ietf:wg:oauth:2.0:oob", - * which will display the authorization code to the user instead of redirecting to a web page. + * @param redirectUri Set a URI to redirect the user to. * @param username The Mastodon account username. * @param password The Mastodon account password. * @see Mastodon oauth API methods #token @@ -116,7 +107,7 @@ class OAuthMethods(private val client: MastodonClient) { clientId: String, clientSecret: String, scope: Scope = Scope(Scope.Name.READ), - redirectUri: String = "urn:ietf:wg:oauth:2.0:oob", + redirectUri: String, username: String, password: String ): MastodonRequest { diff --git a/bigbone/src/test/kotlin/social/bigbone/TestConstants.kt b/bigbone/src/test/kotlin/social/bigbone/TestConstants.kt new file mode 100644 index 000000000..a49882b02 --- /dev/null +++ b/bigbone/src/test/kotlin/social/bigbone/TestConstants.kt @@ -0,0 +1,5 @@ +package social.bigbone + +object TestConstants { + const val REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob" +} diff --git a/bigbone/src/test/kotlin/social/bigbone/api/method/AppMethodsTest.kt b/bigbone/src/test/kotlin/social/bigbone/api/method/AppMethodsTest.kt index 9a4809134..0e7e68141 100644 --- a/bigbone/src/test/kotlin/social/bigbone/api/method/AppMethodsTest.kt +++ b/bigbone/src/test/kotlin/social/bigbone/api/method/AppMethodsTest.kt @@ -5,6 +5,7 @@ import org.amshove.kluent.shouldBeEqualTo import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import social.bigbone.MastodonClient +import social.bigbone.TestConstants import social.bigbone.api.Scope import social.bigbone.api.exception.BigBoneRequestException import social.bigbone.testtool.MockClient @@ -17,7 +18,9 @@ class AppMethodsTest { val appMethods = AppMethods(client) val application = appMethods.createApp( - clientName = "bigbone-sample-app", scope = Scope(Scope.Name.ALL) + clientName = "bigbone-sample-app", + redirectUris = TestConstants.REDIRECT_URI, + scope = Scope(Scope.Name.ALL) ).execute() application.clientId shouldBeEqualTo "client id" @@ -30,7 +33,9 @@ class AppMethodsTest { val client = MockClient.ioException() val appMethods = AppMethods(client) appMethods.createApp( - clientName = "bigbone-sample-app", scope = Scope(Scope.Name.ALL) + clientName = "bigbone-sample-app", + redirectUris = TestConstants.REDIRECT_URI, + scope = Scope(Scope.Name.ALL) ).execute() } } diff --git a/bigbone/src/test/kotlin/social/bigbone/api/method/OAuthMethodsTest.kt b/bigbone/src/test/kotlin/social/bigbone/api/method/OAuthMethodsTest.kt index 765210cc2..9e791d5e3 100644 --- a/bigbone/src/test/kotlin/social/bigbone/api/method/OAuthMethodsTest.kt +++ b/bigbone/src/test/kotlin/social/bigbone/api/method/OAuthMethodsTest.kt @@ -6,6 +6,7 @@ import org.amshove.kluent.shouldBeEqualTo import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import social.bigbone.MastodonClient +import social.bigbone.TestConstants import social.bigbone.api.Scope import social.bigbone.api.exception.BigBoneRequestException import social.bigbone.testtool.MockClient @@ -20,7 +21,11 @@ class OAuthMethodsTest { every { client.getScheme() } returns "https" every { client.getPort() } returns 443 - val url = OAuthMethods(client).getOAuthUrl("client_id", Scope(Scope.Name.ALL)) + val url = OAuthMethods(client).getOAuthUrl( + clientId = "client_id", + scope = Scope(Scope.Name.ALL), + redirectUri = TestConstants.REDIRECT_URI + ) url shouldBeEqualTo "https://mastodon.cloud/oauth/authorize?client_id=client_id" + "&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=read+write+follow" } @@ -30,7 +35,12 @@ class OAuthMethodsTest { val client: MastodonClient = MockClient.mock("access_token.json") every { client.getInstanceName() } returns "mastodon.cloud" val oauth = OAuthMethods(client) - val accessToken = oauth.getUserAccessTokenWithAuthorizationCodeGrant("test", "test", code = "test").execute() + val accessToken = oauth.getUserAccessTokenWithAuthorizationCodeGrant( + clientId = "test", + clientSecret = "test", + redirectUri = TestConstants.REDIRECT_URI, + code = "test" + ).execute() accessToken.accessToken shouldBeEqualTo "test" accessToken.scope shouldBeEqualTo "read write follow" accessToken.tokenType shouldBeEqualTo "bearer" @@ -43,7 +53,12 @@ class OAuthMethodsTest { val client: MastodonClient = MockClient.ioException() every { client.getInstanceName() } returns "mastodon.cloud" val oauth = OAuthMethods(client) - oauth.getUserAccessTokenWithAuthorizationCodeGrant("test", "test", code = "test").execute() + oauth.getUserAccessTokenWithAuthorizationCodeGrant( + clientId = "test", + clientSecret = "test", + redirectUri = TestConstants.REDIRECT_URI, + code = "test" + ).execute() } } @@ -52,7 +67,11 @@ class OAuthMethodsTest { val client: MastodonClient = MockClient.mock("access_token.json") every { client.getInstanceName() } returns "mastodon.cloud" val oauth = OAuthMethods(client) - val accessToken = oauth.getAccessTokenWithClientCredentialsGrant("test", "test").execute() + val accessToken = oauth.getAccessTokenWithClientCredentialsGrant( + clientId = "test", + clientSecret = "test", + redirectUri = TestConstants.REDIRECT_URI + ).execute() accessToken.accessToken shouldBeEqualTo "test" accessToken.scope shouldBeEqualTo "read write follow" accessToken.tokenType shouldBeEqualTo "bearer" @@ -65,7 +84,11 @@ class OAuthMethodsTest { val client: MastodonClient = MockClient.ioException() every { client.getInstanceName() } returns "mastodon.cloud" val oauth = OAuthMethods(client) - oauth.getAccessTokenWithClientCredentialsGrant("test", "test").execute() + oauth.getAccessTokenWithClientCredentialsGrant( + clientId = "test", + clientSecret = "test", + redirectUri = TestConstants.REDIRECT_URI + ).execute() } } @@ -78,7 +101,7 @@ class OAuthMethodsTest { "test", "test", Scope(Scope.Name.ALL), - "urn:ietf:wg:oauth:2.0:oob", + TestConstants.REDIRECT_URI, "test", "test" ).execute() @@ -94,7 +117,14 @@ class OAuthMethodsTest { val client: MastodonClient = MockClient.ioException() every { client.getInstanceName() } returns "mastodon.cloud" val oauth = OAuthMethods(client) - oauth.getUserAccessTokenWithPasswordGrant("test", "test", Scope(Scope.Name.ALL), "urn:ietf:wg:oauth:2.0:oob", "test", "test").execute() + oauth.getUserAccessTokenWithPasswordGrant( + clientId = "test", + clientSecret = "test", + scope = Scope(Scope.Name.ALL), + redirectUri = TestConstants.REDIRECT_URI, + username = "test", + password = "test" + ).execute() } } } diff --git a/sample-java/src/main/java/social/bigbone/sample/Authenticator.java b/sample-java/src/main/java/social/bigbone/sample/Authenticator.java index a5d0b1189..8e7ec8d52 100644 --- a/sample-java/src/main/java/social/bigbone/sample/Authenticator.java +++ b/sample-java/src/main/java/social/bigbone/sample/Authenticator.java @@ -17,6 +17,7 @@ final class Authenticator { private static final String CLIENT_ID = "client_id"; private static final String CLIENT_SECRET = "client_secret"; private static final String ACCESS_TOKEN = "access_token"; + private static final String REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"; private Authenticator() {} @@ -63,11 +64,11 @@ static MastodonClient appRegistrationIfNeeded(final String instanceName, final S private static Token getAccessToken(final String instanceName, final String clientId, final String clientSecret, final String email, final String password) throws BigBoneRequestException { final MastodonClient client = new MastodonClient.Builder(instanceName).build(); final OAuthMethods oauthMethods = new OAuthMethods(client); - return oauthMethods.getUserAccessTokenWithPasswordGrant(clientId, clientSecret, new Scope(), email, password).execute(); + return oauthMethods.getUserAccessTokenWithPasswordGrant(clientId, clientSecret, new Scope(), REDIRECT_URI, email, password).execute(); } private static Application application(final String instanceName) throws BigBoneRequestException { final MastodonClient client = new MastodonClient.Builder(instanceName).build(); - return client.apps().createApp("bigbone-sample-app", "urn:ietf:wg:oauth:2.0:oob", new Scope(), null).execute(); + return client.apps().createApp("bigbone-sample-app", REDIRECT_URI, new Scope(), null).execute(); } } diff --git a/sample-kotlin/src/main/kotlin/social/bigbone/sample/Authenticator.kt b/sample-kotlin/src/main/kotlin/social/bigbone/sample/Authenticator.kt index 9fdc95bf2..5c9d08fca 100644 --- a/sample-kotlin/src/main/kotlin/social/bigbone/sample/Authenticator.kt +++ b/sample-kotlin/src/main/kotlin/social/bigbone/sample/Authenticator.kt @@ -12,6 +12,7 @@ object Authenticator { private const val CLIENT_ID = "client_id" private const val CLIENT_SECRET = "client_secret" private const val ACCESS_TOKEN = "access_token" + private const val REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob" fun appRegistrationIfNeeded(instanceName: String, credentialFilePath: String, useStreaming: Boolean = false): MastodonClient { val file = File(credentialFilePath) @@ -71,13 +72,14 @@ object Authenticator { ): Token { val client = MastodonClient.Builder(instanceName).build() val oAuthMethods = OAuthMethods(client) - return oAuthMethods.getUserAccessTokenWithPasswordGrant(clientId, clientSecret, Scope(), "urn:ietf:wg:oauth:2.0:oob", email, password).execute() + return oAuthMethods.getUserAccessTokenWithPasswordGrant(clientId, clientSecret, Scope(), REDIRECT_URI, email, password).execute() } private fun appRegistration(instanceName: String): Application { val client = MastodonClient.Builder(instanceName).build() return client.apps.createApp( - "bigbone-sample-app", + clientName = "bigbone-sample-app", + redirectUris = REDIRECT_URI, scope = Scope() ).execute() }