Skip to content

Commit

Permalink
feat: make NylasClient and its methods open for mocking
Browse files Browse the repository at this point in the history
This change makes the NylasClient class and its methods open to enable mocking in tests.
- Added open modifier to NylasClient class
- Made all resource accessor methods (messages, calendars, etc.) open
- Made HTTP execution methods open for comprehensive mocking support

Fixes #257

Co-Authored-By: Aaron de Mello <[email protected]>
  • Loading branch information
devin-ai-integration[bot] and AaronDDM committed Dec 11, 2024
1 parent 7b99eec commit 28706db
Showing 1 changed file with 23 additions and 23 deletions.
46 changes: 23 additions & 23 deletions src/main/kotlin/com/nylas/NylasClient.kt
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit
* @param httpClientBuilder The builder to use for creating the http client.
* @param apiUri The URL to use for communicating with the Nylas API.
*/
class NylasClient(
open class NylasClient(
val apiKey: String,
httpClientBuilder: OkHttpClient.Builder = defaultHttpClient(),
apiUri: String = DEFAULT_BASE_URL,
Expand Down Expand Up @@ -77,84 +77,84 @@ class NylasClient(
* Access the Applications API
* @return The Applications API
*/
fun applications(): Applications = Applications(this)
open fun applications(): Applications = Applications(this)

/**
* Access the Attachments API
* @return The Attachments API
*/
fun attachments(): Attachments = Attachments(this)
open fun attachments(): Attachments = Attachments(this)

/**
* Access the Auth API
* @return The Auth API
*/
fun auth(): Auth = Auth(this)
open fun auth(): Auth = Auth(this)

/**
* Access the Calendars API
* @return The Calendars API
*/
fun calendars(): Calendars = Calendars(this)
open fun calendars(): Calendars = Calendars(this)

/**
* Access the Connectors API
* @return The Connectors API
*/
fun connectors(): Connectors = Connectors(this)
open fun connectors(): Connectors = Connectors(this)

/**
* Access the Drafts API
* @return The Drafts API
*/
fun drafts(): Drafts = Drafts(this)
open fun drafts(): Drafts = Drafts(this)

/**
* Access the Events API
* @return The Events API
*/
fun events(): Events = Events(this)
open fun events(): Events = Events(this)

/**
* Access the Folders API
* @return The Folders API
*/
fun folders(): Folders = Folders(this)
open fun folders(): Folders = Folders(this)

/**
* Access the Grants API
* @return The Grants API
*/
fun grants(): Grants = Grants(this)
open fun grants(): Grants = Grants(this)

/**
* Access the Messages API
* @return The Messages API
*/
fun messages(): Messages = Messages(this)
open fun messages(): Messages = Messages(this)

/**
* Access the Threads API
* @return The Threads API
*/
fun threads(): Threads = Threads(this)
open fun threads(): Threads = Threads(this)

/**
* Access the Webhooks API
* @return The Webhooks API
*/
fun webhooks(): Webhooks = Webhooks(this)
open fun webhooks(): Webhooks = Webhooks(this)

/**
* Access the Contacts API
* @return The Contacts API
*/
fun contacts(): Contacts = Contacts(this)
open fun contacts(): Contacts = Contacts(this)

/**
* Get a URL builder instance for the Nylas API.
*/
fun newUrlBuilder(): HttpUrl.Builder = apiUri.newBuilder()
open fun newUrlBuilder(): HttpUrl.Builder = apiUri.newBuilder()

/**
* Execute a GET request to the Nylas API.
Expand All @@ -165,7 +165,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executeGet(
open fun <T> executeGet(
path: String,
resultType: Type,
queryParams: IQueryParams? = null,
Expand All @@ -185,7 +185,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executePut(
open fun <T> executePut(
path: String,
resultType: Type,
requestBody: String? = null,
Expand All @@ -207,7 +207,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executePatch(
open fun <T> executePatch(
path: String,
resultType: Type,
requestBody: String? = null,
Expand All @@ -229,7 +229,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executePost(
open fun <T> executePost(
path: String,
resultType: Type,
requestBody: String? = null,
Expand All @@ -253,7 +253,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executeDelete(
open fun <T> executeDelete(
path: String,
resultType: Type,
queryParams: IQueryParams? = null,
Expand All @@ -274,7 +274,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executeFormRequest(
open fun <T> executeFormRequest(
path: String,
method: HttpMethod,
requestBody: RequestBody,
Expand Down Expand Up @@ -318,7 +318,7 @@ class NylasClient(
* @suppress Not for public use.
*/
@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun <T> executeRequest(
open fun <T> executeRequest(
url: HttpUrl.Builder,
method: HttpMethod,
body: RequestBody?,
Expand All @@ -333,7 +333,7 @@ class NylasClient(
}

@Throws(AbstractNylasApiError::class, NylasSdkTimeoutError::class)
fun downloadResponse(
open fun downloadResponse(
path: String,
queryParams: IQueryParams? = null,
overrides: RequestOverrides? = null,
Expand Down

0 comments on commit 28706db

Please sign in to comment.