-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce HTTP client and base URL as configuration options #37
Conversation
2e605af
to
4d98542
Compare
4d98542
to
82699cb
Compare
52d7ed5
to
9ea43d2
Compare
bbfa48b
to
4509003
Compare
8e853a4
to
e2e5cc1
Compare
e2e5cc1
to
3c199b6
Compare
7bc7ed0
to
82eaea2
Compare
6b3e577
to
f591a31
Compare
f591a31
to
76c776a
Compare
033a476
to
b8a5e65
Compare
config/test.ex
Outdated
import Config | ||
|
||
if workos_api_key = | ||
System.get_env("WORKOS_API_KEY") and workos_client_id = System.get_env("WORKOS_CLIENT_ID") do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
System.get_env("WORKOS_API_KEY") and workos_client_id = System.get_env("WORKOS_CLIENT_ID") do | |
System.get_env("WORKOS_API_KEY") and workos_client_id = System.get_env("WORKOS_CLIENT_ID") do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That line was particularly long, and this was also the final formation by mix format
.
I ended up creating separate variables rather than performing pattern matching inline. c337813
* Add config modules * Start to build behavior for HTTP client * Add `Castable` module to define behavior for casting or transforming data * Handle response * Add HTTP methods to client behavior * Add `TeslaClient` implementation * Add comment to prod.exs to fix `mix format` * Fix casing for `WorkOS` namespace * Add `@deprecated` to `WorkOS.API` * Fix test config * Validate config * Fix linter * Add module for structured error response * Extract env variables to separate variables
* Introduce HTTP client and base URL as configuration options (#37) * Add config modules * Start to build behavior for HTTP client * Add `Castable` module to define behavior for casting or transforming data * Handle response * Add HTTP methods to client behavior * Add `TeslaClient` implementation * Add comment to prod.exs to fix `mix format` * Fix casing for `WorkOS` namespace * Add `@deprecated` to `WorkOS.API` * Fix test config * Validate config * Fix linter * Add module for structured error response * Extract env variables to separate variables * Add livebook example (#38) * Add `ISSUE_TEMPLATE.md` (#34) * Permit `expires_in` param when creating passwordless session (#35) Co-authored-by: Mark Tran <[email protected]> * Start to build behavior for HTTP client * Add `Castable` module to define behavior for casting or transforming data * Handle response * Add HTTP methods to client behavior * Add `TeslaClient` implementation * Add comment to prod.exs to fix `mix format` * Fix casing for `WorkOS` namespace * Add `@deprecated` to `WorkOS.API` * Fix test config * Validate config * Fix linter * Add livebook file --------- Co-authored-by: Jordan Mackie <[email protected]> Co-authored-by: Mark Tran <[email protected]> * Introduce new SSO module and tests structure (#39) * Update `mix.exs` * Add util module * Add `Connection` struct * Add `List` castable module * Add `list_connections` method * Add `delete_connection` method * Add `get_connection` method * Add draft for `get_authorization_url` * Add `dialyxir` dependency * Remove old SSO module * Define logic for `get_authorization_url` * Add `Profile` and `ProfileAndToken` response structs * Add `get_profile` function * Add basic layer for tests * Add structs to `mix.exs` * Fix guard on `get_authorization_url` * Remove deprecated tests * Add doc comments for parameter options of `get_authorization_url` * Remove `Application.put_env` from `test_helper` * Add draft test * Fix extension of test files to `exs` * Apply case for test config * Define base URL for test * Fix test * Implement tests for `get_authorization_url` * Define test for `get_profile_and_token` * Implement tests for `get_profile_and_token` * Implement tests for `get_profile` * Implement test for `get_connection` * Implement test for `list_connections` * Rename `ClientMock` to `SSO.ClientMock` * Implement test for `delete_connection` * Fix return type for `delete_connection` * Fix `mix credo` issues * Update comment indentation * Handle case where `get_authorization_url` is called without having the application config loaded * Add validation for `redirect_uri` * Include `client_id` on WorkOS Client * Update livebook examples * Fix connection struct * Add `WorkOS.Empty` * Remove `IO.inspect` * Refactor `Organizations` module (#44) * Add skeleton for Organizations module * Remove old `Organizations` module * Add missing `object` key to connections domain * Add response struct for organizations * Implement functions for `Organization` module * Add `create_organization` and `update_organization` * Extract exceptions to separate modules * Allow to call `list` functions without client and map args * Implement tests for organizations * Update Livebook examples * Remove `Logger` * Remove `WorkOS.Util` and fix timestamps * Refactor `Portal` module (#45) * Add basic modules * Define function clauses * Include implementation * Add Portal link response struct * Add portal client mock * Implement tests * Add example to Livebook * Refactor `Webhooks` module (#46) * Restructure modules * Add `Event` struct to `mix.exs` * Refactor `DirectorySync` module (#47) * Add base modules * Implement `get_directory` * Implement `list_directories` * Implement `delete_directory` * Implement `Directory.User` * Add tests for directory users * Remove `WorkOS.Util` * Add Livebook examples * Rollback `Util` changes * Remove `DateTime` from timestamps to match API reference * Add missing `object` keys to response structs * Remove WorkOS.Util * Refactor `Passwordless` module (#48) * Add base modules * Implement functions * Implement tests * Remove `message` property * Add `Events` module (#49) * Add base modules * Implement `list_events` * Implement tests * Add to Livebook * Refactor `AuditLogs` module (#50) * Add export response struct * Add base modules * Add implementation for `create_export` * Add tests for `create_export` * Add `get_export` method * Add `add_event` method * Add examples to Livebook * Remove MFA module (#51) * Add User Management API (#53) * Add draft for User Management module * Add `Invitation` struct * Add `User` struct * Add User API methods * Add methods from `Invitation` API * Add `OrganizationMembership` API methods * Add Password Reset API methods * Add Email Verification API methods * Add MFA response structs * Add Multi-Factor API methods * Add Magic Auth API methods * Add Authentication API methods * Add `get_authorization_url` * Update Livebook * Fixes `authorize` parameters * Add Domain Verification API (#55) * Remove legacy `WorkOS.API` * Add `OrganizationDomain` struct * Add Domain Verification API methods * Add domain verification API methods * Update README.md * Format modules * Fix `credo` issues * Fix dialyzer issues * Rename `DomainVerification` to `OrganizationDomains` (#56) * Rename to `OrganizationDomains` * Add to Livebook * Remove `domain` option and add tests for error case * Update workflow * Bump to `1.0.0` * Introduce Dialyzer artifacts * Remove `:hackney` * Update `elixirc_paths` * Rollback `elixirc_paths` * Import `ExUnit.Assertions` on mock files * Update `plug_crypto` * Update `jason` * Remove support for oldest OTP version * Update `dialyxir` * Remove enum constants * Update mock API keys * Add deprecated `MFA` API module (#58) * Fix timestamp mapping * Add deprecated response structs * Add deprecated API * Add tests * Fix generate_link types * Install `hackney` * Fix query params * Fix `list_groups` params * Fix `send_session` route from Magic Link * Pass `code` as keyword argument * Fix `challenge_factor` * Fix `get_organization` snippet from Livebook * Add organization ID as parameter on `update_organization` * Add `semaphore.yml` * Fix `WorkOS.Empty` struct * Fix `get_profile_and_token` snippet on Livebook * Fix `get_profile` Livebook snippet * Add experimental disclaimer back to README.md * Rollback semaphore * Rollback `elixir.yml` workflow due to branch policies --------- Co-authored-by: Jordan Mackie <[email protected]> Co-authored-by: Mark Tran <[email protected]>
Closes #6
This PR defines an interface for HTTP client, it allows applications to use other implementations based on the library of their preference. Next PRs will integrate
WorkOS.Client
to other SDK modules and delete the currentWorkOS.API
.Configuring WorkOS via app config:
By choosing to configure WorkOS via app config, passing a client struct is always optional.
The only required config options are
:api_key
and:client_id
. If you would like to replace the HTTP client, configure the:client
option and define your own client module. By default, this library uses Tesla.