nylas 6.0.0.beta.3 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/nylas/client.rb +1 -1
- data/lib/nylas/handler/http_client.rb +28 -19
- data/lib/nylas/resources/applications.rb +3 -3
- data/lib/nylas/resources/auth.rb +44 -33
- data/lib/nylas/resources/connectors.rb +2 -2
- data/lib/nylas/resources/contacts.rb +1 -1
- data/lib/nylas/resources/credentials.rb +2 -2
- data/lib/nylas/resources/events.rb +1 -1
- data/lib/nylas/resources/grants.rb +4 -4
- data/lib/nylas/resources/messages.rb +5 -5
- data/lib/nylas/resources/webhooks.rb +33 -0
- data/lib/nylas/utils/file_utils.rb +6 -2
- data/lib/nylas/version.rb +1 -1
- metadata +6 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a84dfeb084c667f7b3e8f41e03ae5ef51be7c04fefd1e36ac357fd701a5a7a82
         | 
| 4 | 
            +
              data.tar.gz: 14bd5db7be83cac30aadc723089dac7502198de4b7ed7a23cb58b6dc6984c870
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ef1dd4c3a6351f885a6f7f22af3848f2e0bfdc68ac62c2d933aa0a1336e08eca0975daf9b304543ac493ea87b32636bb4d8b9139f00ca865e44486dc5cdcbb11
         | 
| 7 | 
            +
              data.tar.gz: bb3e97a16d619377c62b9c28fbaf3b4f9e93b3d2ee80d50ad9d6687cec0821c5a5a57f36b090838a500e82a0a2705649adb50fdad5a9be821a302fb0ab800c8e
         | 
    
        data/lib/nylas/client.rb
    CHANGED
    
    | @@ -18,7 +18,7 @@ module Nylas | |
| 18 18 | 
             
                #
         | 
| 19 19 | 
             
                # @param api_key [String, nil] API key to use for the client session.
         | 
| 20 20 | 
             
                # @param api_uri [String] Client session's host.
         | 
| 21 | 
            -
                # @param timeout [ | 
| 21 | 
            +
                # @param timeout [Integer, nil] Timeout value to use for the client session.
         | 
| 22 22 | 
             
                def initialize(api_key:,
         | 
| 23 23 | 
             
                               api_uri: Config::DEFAULT_REGION_URL,
         | 
| 24 24 | 
             
                               timeout: nil)
         | 
| @@ -42,8 +42,8 @@ module Nylas | |
| 42 42 |  | 
| 43 43 | 
             
                      parse_json_evaluate_error(result.code.to_i, response, path, content_type)
         | 
| 44 44 | 
             
                    end
         | 
| 45 | 
            -
                  rescue  | 
| 46 | 
            -
                    raise Nylas::NylasSdkTimeoutError.new(request | 
| 45 | 
            +
                  rescue RestClient::Exceptions::OpenTimeout, RestClient::Exceptions::ReadTimeout
         | 
| 46 | 
            +
                    raise Nylas::NylasSdkTimeoutError.new(request[:path], timeout)
         | 
| 47 47 | 
             
                  end
         | 
| 48 48 | 
             
                end
         | 
| 49 49 |  | 
| @@ -92,8 +92,7 @@ module Nylas | |
| 92 92 | 
             
                def build_request(
         | 
| 93 93 | 
             
                  method:, path: nil, headers: {}, query: {}, payload: nil, timeout: nil, api_key: nil
         | 
| 94 94 | 
             
                )
         | 
| 95 | 
            -
                  url = path
         | 
| 96 | 
            -
                  url = add_query_params_to_url(url, query)
         | 
| 95 | 
            +
                  url = build_url(path, query)
         | 
| 97 96 | 
             
                  resulting_headers = default_headers.merge(headers).merge(auth_header(api_key))
         | 
| 98 97 | 
             
                  if !payload.nil? && !payload["multipart"]
         | 
| 99 98 | 
             
                    payload = payload&.to_json
         | 
| @@ -206,33 +205,43 @@ module Nylas | |
| 206 205 | 
             
                end
         | 
| 207 206 |  | 
| 208 207 | 
             
                # Adds query parameters to a URL.
         | 
| 209 | 
            -
                #
         | 
| 208 | 
            +
                # @param url [String] The base URL.
         | 
| 209 | 
            +
                # @param query [Hash] The query parameters to add to the URL.
         | 
| 210 210 | 
             
                # @return [String] Processed URL, including query params.
         | 
| 211 | 
            -
                def  | 
| 211 | 
            +
                def build_url(url, query = nil)
         | 
| 212 212 | 
             
                  unless query.nil? || query.empty?
         | 
| 213 213 | 
             
                    uri = URI.parse(url)
         | 
| 214 | 
            -
                     | 
| 215 | 
            -
                    params = URI.decode_www_form(uri.query || "") + query.to_a
         | 
| 216 | 
            -
                    uri.query = URI.encode_www_form(params)
         | 
| 214 | 
            +
                    uri = build_query(uri, query)
         | 
| 217 215 | 
             
                    url = uri.to_s
         | 
| 218 216 | 
             
                  end
         | 
| 219 217 |  | 
| 220 218 | 
             
                  url
         | 
| 221 219 | 
             
                end
         | 
| 222 220 |  | 
| 223 | 
            -
                #  | 
| 224 | 
            -
                #
         | 
| 225 | 
            -
                # @ | 
| 226 | 
            -
                 | 
| 227 | 
            -
             | 
| 228 | 
            -
                   | 
| 229 | 
            -
                     | 
| 230 | 
            -
             | 
| 221 | 
            +
                # Build the query string for a URI.
         | 
| 222 | 
            +
                # @param uri [URI] URL to add the query to.
         | 
| 223 | 
            +
                # @param query [Hash] The query params to include in the query.
         | 
| 224 | 
            +
                # @return [URI] The URI object with the query parameters included.
         | 
| 225 | 
            +
                def build_query(uri, query)
         | 
| 226 | 
            +
                  query.each do |key, value|
         | 
| 227 | 
            +
                    case value
         | 
| 228 | 
            +
                    when Array
         | 
| 229 | 
            +
                      value.each do |item|
         | 
| 230 | 
            +
                        qs = "#{URI.encode_www_form_component(key)}=#{URI.encode_www_form_component(item)}"
         | 
| 231 | 
            +
                        uri.query = [uri.query, qs].compact.join("&")
         | 
| 232 | 
            +
                      end
         | 
| 233 | 
            +
                    when Hash
         | 
| 234 | 
            +
                      value.each do |k, v|
         | 
| 235 | 
            +
                        qs = "#{URI.encode_www_form_component(key)}=#{URI.encode_www_form_component("#{k}:#{v}")}"
         | 
| 236 | 
            +
                        uri.query = [uri.query, qs].compact.join("&")
         | 
| 237 | 
            +
                      end
         | 
| 238 | 
            +
                    else
         | 
| 239 | 
            +
                      qs = "#{URI.encode_www_form_component(key)}=#{URI.encode_www_form_component(value)}"
         | 
| 240 | 
            +
                      uri.query = [uri.query, qs].compact.join("&")
         | 
| 231 241 | 
             
                    end
         | 
| 232 | 
            -
                    query[:metadata_pair] = pairs
         | 
| 233 242 | 
             
                  end
         | 
| 234 243 |  | 
| 235 | 
            -
                   | 
| 244 | 
            +
                  uri
         | 
| 236 245 | 
             
                end
         | 
| 237 246 |  | 
| 238 247 | 
             
                # Set the authorization header for an API query.
         | 
| @@ -17,10 +17,10 @@ module Nylas | |
| 17 17 | 
             
                  @redirect_uris = RedirectUris.new(sdk_instance)
         | 
| 18 18 | 
             
                end
         | 
| 19 19 |  | 
| 20 | 
            -
                #  | 
| 20 | 
            +
                # Get application details.
         | 
| 21 21 | 
             
                #
         | 
| 22 | 
            -
                # @return [Array(Hash, String)] Application  | 
| 23 | 
            -
                def  | 
| 22 | 
            +
                # @return [Array(Hash, String)] Application details and API Request ID.
         | 
| 23 | 
            +
                def get_details
         | 
| 24 24 | 
             
                  get(path: "#{api_uri}/v3/applications")
         | 
| 25 25 | 
             
                end
         | 
| 26 26 | 
             
              end
         | 
    
        data/lib/nylas/resources/auth.rb
    CHANGED
    
    | @@ -59,7 +59,7 @@ module Nylas | |
| 59 59 | 
             
                #   IMPORTANT: You must store the 'secret' returned to use it inside the CodeExchange flow.
         | 
| 60 60 | 
             
                #
         | 
| 61 61 | 
             
                # @param config [Hash] Configuration for building the URL.
         | 
| 62 | 
            -
                # @return [ | 
| 62 | 
            +
                # @return [Hash] URL for hosted authentication with the secret and the hashed secret.
         | 
| 63 63 | 
             
                def url_for_oauth2_pkce(config)
         | 
| 64 64 | 
             
                  url = url_auth_builder(config)
         | 
| 65 65 |  | 
| @@ -71,7 +71,7 @@ module Nylas | |
| 71 71 | 
             
                  url.query = build_query_with_pkce(config, secret_hash)
         | 
| 72 72 |  | 
| 73 73 | 
             
                  # Returns the URL with secret and hashed secret.
         | 
| 74 | 
            -
                   | 
| 74 | 
            +
                  { secret: secret, secret_hash: secret_hash, url: url.to_s }
         | 
| 75 75 | 
             
                end
         | 
| 76 76 |  | 
| 77 77 | 
             
                # Builds the URL for admin consent authentication for Microsoft.
         | 
| @@ -81,9 +81,7 @@ module Nylas | |
| 81 81 | 
             
                def url_for_admin_consent(config)
         | 
| 82 82 | 
             
                  config_with_provider = config.merge("provider" => "microsoft")
         | 
| 83 83 | 
             
                  url = url_auth_builder(config_with_provider)
         | 
| 84 | 
            -
             | 
| 85 | 
            -
                  query_params = build_query_with_admin_consent(config)
         | 
| 86 | 
            -
                  url.query = URI.encode_www_form(query_params)
         | 
| 84 | 
            +
                  url.query = build_query_with_admin_consent(config)
         | 
| 87 85 |  | 
| 88 86 | 
             
                  url.to_s
         | 
| 89 87 | 
             
                end
         | 
| @@ -102,47 +100,58 @@ module Nylas | |
| 102 100 | 
             
                  true
         | 
| 103 101 | 
             
                end
         | 
| 104 102 |  | 
| 103 | 
            +
                # Detects the provider of an email address.
         | 
| 104 | 
            +
                # @param params [Hash] Parameters to detect the provider.
         | 
| 105 | 
            +
                # @return [Array(Hash, String)] Detected provider, if found and API Request ID.
         | 
| 106 | 
            +
                def detect_provider(params)
         | 
| 107 | 
            +
                  post(
         | 
| 108 | 
            +
                    path: "#{api_uri}/v3/providers/detect",
         | 
| 109 | 
            +
                    query_params: params
         | 
| 110 | 
            +
                  )
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
             | 
| 105 113 | 
             
                private
         | 
| 106 114 |  | 
| 107 115 | 
             
                # Builds the query with admin consent authentication for Microsoft.
         | 
| 108 116 | 
             
                #
         | 
| 109 117 | 
             
                # @param config [Hash] Configuration for the query.
         | 
| 110 | 
            -
                # @return [ | 
| 118 | 
            +
                # @return [String] Updated list of parameters, including those specific to admin
         | 
| 111 119 | 
             
                # consent.
         | 
| 112 120 | 
             
                def build_query_with_admin_consent(config)
         | 
| 113 121 | 
             
                  params = build_query(config)
         | 
| 114 122 |  | 
| 115 123 | 
             
                  # Appends new params specific for admin consent.
         | 
| 116 | 
            -
                  params[ | 
| 117 | 
            -
                  params[ | 
| 124 | 
            +
                  params[:provider] = "microsoft"
         | 
| 125 | 
            +
                  params[:response_type] = "adminconsent"
         | 
| 126 | 
            +
                  params[:credential_id] = config[:credential_id] if config[:credential_id]
         | 
| 118 127 |  | 
| 119 | 
            -
                  params
         | 
| 128 | 
            +
                  URI.encode_www_form(params).gsub("+", "%20")
         | 
| 120 129 | 
             
                end
         | 
| 121 130 |  | 
| 122 131 | 
             
                # Builds the query with PKCE.
         | 
| 123 132 | 
             
                #
         | 
| 124 133 | 
             
                # @param config [Hash] Configuration for the query.
         | 
| 125 134 | 
             
                # @param secret_hash [Hash] Hashed secret.
         | 
| 126 | 
            -
                # @return [ | 
| 135 | 
            +
                # @return [String] Updated list of encoded parameters, including those specific
         | 
| 127 136 | 
             
                # to PKCE.
         | 
| 128 137 | 
             
                def build_query_with_pkce(config, secret_hash)
         | 
| 129 138 | 
             
                  params = build_query(config)
         | 
| 130 139 |  | 
| 131 140 | 
             
                  # Appends new PKCE specific params.
         | 
| 132 | 
            -
                  params[ | 
| 133 | 
            -
                  params[ | 
| 141 | 
            +
                  params[:code_challenge_method] = "s256"
         | 
| 142 | 
            +
                  params[:code_challenge] = secret_hash
         | 
| 134 143 |  | 
| 135 | 
            -
                  URI.encode_www_form(params)
         | 
| 144 | 
            +
                  URI.encode_www_form(params).gsub("+", "%20")
         | 
| 136 145 | 
             
                end
         | 
| 137 146 |  | 
| 138 147 | 
             
                # Builds the authentication URL.
         | 
| 139 148 | 
             
                #
         | 
| 140 149 | 
             
                # @param config [Hash] Configuration for the query.
         | 
| 141 | 
            -
                # @return [ | 
| 150 | 
            +
                # @return [URI] List of components for the authentication URL.
         | 
| 142 151 | 
             
                def url_auth_builder(config)
         | 
| 143 152 | 
             
                  builder = URI.parse(api_uri)
         | 
| 144 153 | 
             
                  builder.path = "/v3/connect/auth"
         | 
| 145 | 
            -
                  builder.query = build_query(config)
         | 
| 154 | 
            +
                  builder.query = URI.encode_www_form(build_query(config)).gsub!("+", "%20")
         | 
| 146 155 |  | 
| 147 156 | 
             
                  builder
         | 
| 148 157 | 
             
                end
         | 
| @@ -150,40 +159,42 @@ module Nylas | |
| 150 159 | 
             
                # Builds the query.
         | 
| 151 160 | 
             
                #
         | 
| 152 161 | 
             
                # @param config [Hash] Configuration for the query.
         | 
| 153 | 
            -
                # @return [ | 
| 162 | 
            +
                # @return [Hash] List of parameters to encode in the query.
         | 
| 154 163 | 
             
                def build_query(config)
         | 
| 155 164 | 
             
                  params = {
         | 
| 156 | 
            -
                     | 
| 157 | 
            -
                     | 
| 158 | 
            -
                     | 
| 159 | 
            -
                     | 
| 165 | 
            +
                    client_id: config[:client_id],
         | 
| 166 | 
            +
                    redirect_uri: config[:redirect_uri],
         | 
| 167 | 
            +
                    access_type: config[:access_type] || "online",
         | 
| 168 | 
            +
                    response_type: "code"
         | 
| 160 169 | 
             
                  }
         | 
| 161 | 
            -
                  params[ | 
| 162 | 
            -
                  params[ | 
| 163 | 
            -
                  params[ | 
| 164 | 
            -
                  params[ | 
| 165 | 
            -
                  params[ | 
| 170 | 
            +
                  params[:provider] = config[:provider] if config[:provider]
         | 
| 171 | 
            +
                  params[:prompt] = config[:prompt] if config[:prompt]
         | 
| 172 | 
            +
                  params[:metadata] = config[:metadata] if config[:metadata]
         | 
| 173 | 
            +
                  params[:state] = config[:state] if config[:state]
         | 
| 174 | 
            +
                  params[:scope] = config[:scope].join(" ") if config[:scope]
         | 
| 166 175 | 
             
                  if config[:login_hint]
         | 
| 167 | 
            -
                    params[ | 
| 168 | 
            -
                    params[ | 
| 176 | 
            +
                    params[:login_hint] = config[:login_hint]
         | 
| 177 | 
            +
                    params[:include_grant_scopes] = config[:include_grant_scopes].to_s if config[:include_grant_scopes]
         | 
| 169 178 | 
             
                  end
         | 
| 170 179 |  | 
| 171 | 
            -
                   | 
| 180 | 
            +
                  params
         | 
| 172 181 | 
             
                end
         | 
| 173 182 |  | 
| 174 | 
            -
                #  | 
| 183 | 
            +
                # Hash a plain text secret for use in PKCE.
         | 
| 175 184 | 
             
                #
         | 
| 176 | 
            -
                # @param secret [String]  | 
| 177 | 
            -
                # @return [ | 
| 185 | 
            +
                # @param secret [String] The plain text secret to hash.
         | 
| 186 | 
            +
                # @return [String] The hashed secret with base64 encoding (without padding).
         | 
| 178 187 | 
             
                def hash_pkce_secret(secret)
         | 
| 179 | 
            -
                  Digest::SHA256. | 
| 180 | 
            -
                  Base64. | 
| 188 | 
            +
                  sha256_hash = Digest::SHA256.hexdigest(secret)
         | 
| 189 | 
            +
                  Base64.urlsafe_encode64(sha256_hash, padding: false)
         | 
| 181 190 | 
             
                end
         | 
| 182 191 |  | 
| 183 192 | 
             
                # Sends the token request to the Nylas API.
         | 
| 184 193 | 
             
                #
         | 
| 185 194 | 
             
                # @param request [Hash] Code exchange request.
         | 
| 186 195 | 
             
                def execute_token_request(request)
         | 
| 196 | 
            +
                  request[:client_secret] = api_key if request[:client_secret].nil?
         | 
| 197 | 
            +
             | 
| 187 198 | 
             
                  execute(
         | 
| 188 199 | 
             
                    method: :post,
         | 
| 189 200 | 
             
                    path: "#{api_uri}/v3/connect/token",
         | 
| @@ -8,7 +8,7 @@ module Nylas | |
| 8 8 | 
             
              class Connectors < Resource
         | 
| 9 9 | 
             
                include ApiOperations::Get
         | 
| 10 10 | 
             
                include ApiOperations::Post
         | 
| 11 | 
            -
                include ApiOperations:: | 
| 11 | 
            +
                include ApiOperations::Patch
         | 
| 12 12 | 
             
                include ApiOperations::Delete
         | 
| 13 13 |  | 
| 14 14 | 
             
                # Access the Credentials API
         | 
| @@ -59,7 +59,7 @@ module Nylas | |
| 59 59 | 
             
                # @param request_body [Hash] The values to update the connector with
         | 
| 60 60 | 
             
                # @return [Array(Hash, String)] The updated connector and API Request ID.
         | 
| 61 61 | 
             
                def update(provider:, request_body:)
         | 
| 62 | 
            -
                   | 
| 62 | 
            +
                  patch(
         | 
| 63 63 | 
             
                    path: "#{api_uri}/v3/connectors/#{provider}",
         | 
| 64 64 | 
             
                    request_body: request_body
         | 
| 65 65 | 
             
                  )
         | 
| @@ -79,7 +79,7 @@ module Nylas | |
| 79 79 | 
             
                # @param identifier [String] Grant ID or email account to query.
         | 
| 80 80 | 
             
                # @param query_params [Hash, nil] Query params to pass to the request.
         | 
| 81 81 | 
             
                # @return [Array(Array(Hash), String)] The list of contact groups and API Request ID.
         | 
| 82 | 
            -
                def  | 
| 82 | 
            +
                def list_groups(identifier:, query_params: nil)
         | 
| 83 83 | 
             
                  get(
         | 
| 84 84 | 
             
                    path: "#{api_uri}/v3/grants/#{identifier}/contacts/groups",
         | 
| 85 85 | 
             
                    query_params: query_params
         | 
| @@ -8,7 +8,7 @@ module Nylas | |
| 8 8 | 
             
              class Credentials < Resource
         | 
| 9 9 | 
             
                include ApiOperations::Get
         | 
| 10 10 | 
             
                include ApiOperations::Post
         | 
| 11 | 
            -
                include ApiOperations:: | 
| 11 | 
            +
                include ApiOperations::Patch
         | 
| 12 12 | 
             
                include ApiOperations::Delete
         | 
| 13 13 |  | 
| 14 14 | 
             
                # Return all credentials.
         | 
| @@ -53,7 +53,7 @@ module Nylas | |
| 53 53 | 
             
                # @param request_body [Hash] The values to update the connector with
         | 
| 54 54 | 
             
                # @return [Array(Hash, String)] The updated connector and API Request ID.
         | 
| 55 55 | 
             
                def update(provider:, credential_id:, request_body:)
         | 
| 56 | 
            -
                   | 
| 56 | 
            +
                  patch(
         | 
| 57 57 | 
             
                    path: "#{api_uri}/v3/connectors/#{provider}/creds/#{credential_id}",
         | 
| 58 58 | 
             
                    request_body: request_body
         | 
| 59 59 | 
             
                  )
         | 
| @@ -86,7 +86,7 @@ module Nylas | |
| 86 86 | 
             
                # @param event_id [String] The id of the event to respond to.
         | 
| 87 87 | 
             
                # @param request_body [Hash] The status values to send the RSVP with.
         | 
| 88 88 | 
             
                # @param query_params [Hash] The query parameters to include in the request
         | 
| 89 | 
            -
                # @return [Hash] Response object with the API Request ID.
         | 
| 89 | 
            +
                # @return [(Hash, String)] Response object with the API Request ID.
         | 
| 90 90 | 
             
                def send_rsvp(identifier:, event_id:, request_body:, query_params:)
         | 
| 91 91 | 
             
                  post(
         | 
| 92 92 | 
             
                    path: "#{api_uri}/v3/grants/#{identifier}/events/#{event_id}/send-rsvp",
         | 
| @@ -16,7 +16,7 @@ module Nylas | |
| 16 16 | 
             
                # @return [Array(Array(Hash), String)] The list of grants and API Request ID.
         | 
| 17 17 | 
             
                def list(query_params: nil)
         | 
| 18 18 | 
             
                  get(
         | 
| 19 | 
            -
                    path: "#{api_uri}/v3/ | 
| 19 | 
            +
                    path: "#{api_uri}/v3/grants",
         | 
| 20 20 | 
             
                    query_params: query_params
         | 
| 21 21 | 
             
                  )
         | 
| 22 22 | 
             
                end
         | 
| @@ -27,7 +27,7 @@ module Nylas | |
| 27 27 | 
             
                # @return [Array(Hash, String)] The grant and API request ID.
         | 
| 28 28 | 
             
                def find(grant_id:)
         | 
| 29 29 | 
             
                  get(
         | 
| 30 | 
            -
                    path: "#{api_uri}/v3/ | 
| 30 | 
            +
                    path: "#{api_uri}/v3/grants/#{grant_id}"
         | 
| 31 31 | 
             
                  )
         | 
| 32 32 | 
             
                end
         | 
| 33 33 |  | 
| @@ -38,7 +38,7 @@ module Nylas | |
| 38 38 | 
             
                # @return [Array(Hash, String)] The updated grant and API Request ID.
         | 
| 39 39 | 
             
                def update(grant_id:, request_body:)
         | 
| 40 40 | 
             
                  put(
         | 
| 41 | 
            -
                    path: "#{api_uri}/v3/ | 
| 41 | 
            +
                    path: "#{api_uri}/v3/grants/#{grant_id}",
         | 
| 42 42 | 
             
                    request_body: request_body
         | 
| 43 43 | 
             
                  )
         | 
| 44 44 | 
             
                end
         | 
| @@ -49,7 +49,7 @@ module Nylas | |
| 49 49 | 
             
                # @return [Array(TrueClass, String)] True and the API Request ID for the delete operation.
         | 
| 50 50 | 
             
                def destroy(grant_id:)
         | 
| 51 51 | 
             
                  _, request_id = delete(
         | 
| 52 | 
            -
                    path: "#{api_uri}/v3/ | 
| 52 | 
            +
                    path: "#{api_uri}/v3/grants/#{grant_id}"
         | 
| 53 53 | 
             
                  )
         | 
| 54 54 |  | 
| 55 55 | 
             
                  [true, request_id]
         | 
| @@ -94,21 +94,21 @@ module Nylas | |
| 94 94 | 
             
                # Retrieve your scheduled messages.
         | 
| 95 95 | 
             
                #
         | 
| 96 96 | 
             
                # @param identifier [String] Grant ID or email account from which to find the scheduled message from.
         | 
| 97 | 
            -
                # @param schedule_id [String] The id of the scheduled message to stop.
         | 
| 98 97 | 
             
                # @return [Array(Hash, String)] The list of scheduled messages and the API Request ID.
         | 
| 99 | 
            -
                def list_scheduled_messages(identifier | 
| 98 | 
            +
                def list_scheduled_messages(identifier:)
         | 
| 100 99 | 
             
                  get(
         | 
| 101 | 
            -
                    path: "#{api_uri}/v3/grants/#{identifier}/messages/schedules | 
| 100 | 
            +
                    path: "#{api_uri}/v3/grants/#{identifier}/messages/schedules"
         | 
| 102 101 | 
             
                  )
         | 
| 103 102 | 
             
                end
         | 
| 104 103 |  | 
| 105 104 | 
             
                # Retrieve your scheduled messages.
         | 
| 106 105 | 
             
                #
         | 
| 107 106 | 
             
                # @param identifier [String] Grant ID or email account from which to list the scheduled messages from.
         | 
| 107 | 
            +
                # @param schedule_id [String] The id of the scheduled message to stop.
         | 
| 108 108 | 
             
                # @return [Array(Hash, String)] The scheduled message and the API Request ID.
         | 
| 109 | 
            -
                def find_scheduled_messages(identifier:)
         | 
| 109 | 
            +
                def find_scheduled_messages(identifier:, schedule_id:)
         | 
| 110 110 | 
             
                  get(
         | 
| 111 | 
            -
                    path: "#{api_uri}/v3/grants/#{identifier}/messages/schedules"
         | 
| 111 | 
            +
                    path: "#{api_uri}/v3/grants/#{identifier}/messages/schedules/#{schedule_id}"
         | 
| 112 112 | 
             
                  )
         | 
| 113 113 | 
             
                end
         | 
| 114 114 |  | 
| @@ -84,5 +84,38 @@ module Nylas | |
| 84 84 |  | 
| 85 85 | 
             
                  [true, request_id]
         | 
| 86 86 | 
             
                end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                # Update the webhook secret value for a destination.
         | 
| 89 | 
            +
                # @param webhook_id [String] The ID of the webhook destination to update.
         | 
| 90 | 
            +
                # @return [Array(Hash, String)] The updated webhook destination and API Request ID.
         | 
| 91 | 
            +
                def rotate_secret(webhook_id:)
         | 
| 92 | 
            +
                  put(
         | 
| 93 | 
            +
                    path: "#{api_uri}/v3/webhooks/#{webhook_id}/rotate-secret",
         | 
| 94 | 
            +
                    request_body: {}
         | 
| 95 | 
            +
                  )
         | 
| 96 | 
            +
                end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                # Get the current list of IP addresses that Nylas sends webhooks from
         | 
| 99 | 
            +
                # @return [Array(Hash, String)] List of IP addresses that Nylas sends webhooks from and API Request ID.
         | 
| 100 | 
            +
                def ip_addresses
         | 
| 101 | 
            +
                  get(
         | 
| 102 | 
            +
                    path: "#{api_uri}/v3/webhooks/ip-addresses"
         | 
| 103 | 
            +
                  )
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                # Extract the challenge parameter from a URL
         | 
| 107 | 
            +
                # @param url [String] The URL sent by Nylas containing the challenge parameter
         | 
| 108 | 
            +
                # @return [String] The challenge parameter
         | 
| 109 | 
            +
                def self.extract_challenge_parameter(url)
         | 
| 110 | 
            +
                  url_object = URI.parse(url)
         | 
| 111 | 
            +
                  query = CGI.parse(url_object.query || "")
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                  challenge_parameter = query["challenge"]
         | 
| 114 | 
            +
                  if challenge_parameter.nil? || challenge_parameter.empty? || challenge_parameter.first.nil?
         | 
| 115 | 
            +
                    raise "Invalid URL or no challenge parameter found."
         | 
| 116 | 
            +
                  end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                  challenge_parameter.first
         | 
| 119 | 
            +
                end
         | 
| 87 120 | 
             
              end
         | 
| 88 121 | 
             
            end
         | 
| @@ -38,8 +38,12 @@ module Nylas | |
| 38 38 | 
             
                # @return [Hash] The request that will attach the file to the message/draft
         | 
| 39 39 | 
             
                def self.attach_file_request_builder(file_path)
         | 
| 40 40 | 
             
                  filename = File.basename(file_path)
         | 
| 41 | 
            -
                  content_type = MIME::Types.type_for(file_path) | 
| 42 | 
            -
                  content_type =  | 
| 41 | 
            +
                  content_type = MIME::Types.type_for(file_path)
         | 
| 42 | 
            +
                  content_type = if !content_type.nil? && !content_type.empty?
         | 
| 43 | 
            +
                                   content_type.first.to_s
         | 
| 44 | 
            +
                                 else
         | 
| 45 | 
            +
                                   "application/octet-stream"
         | 
| 46 | 
            +
                                 end
         | 
| 43 47 | 
             
                  size = File.size(file_path)
         | 
| 44 48 | 
             
                  content = File.new(file_path, "rb")
         | 
| 45 49 |  | 
    
        data/lib/nylas/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: nylas
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 6.0.0 | 
| 4 | 
            +
              version: 6.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Nylas, Inc.
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2024- | 
| 11 | 
            +
            date: 2024-02-05 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: mime-types
         | 
| @@ -180,14 +180,14 @@ dependencies: | |
| 180 180 | 
             
                requirements:
         | 
| 181 181 | 
             
                - - "~>"
         | 
| 182 182 | 
             
                  - !ruby/object:Gem::Version
         | 
| 183 | 
            -
                    version: 0. | 
| 183 | 
            +
                    version: 0.22.0
         | 
| 184 184 | 
             
              type: :development
         | 
| 185 185 | 
             
              prerelease: false
         | 
| 186 186 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 187 187 | 
             
                requirements:
         | 
| 188 188 | 
             
                - - "~>"
         | 
| 189 189 | 
             
                  - !ruby/object:Gem::Version
         | 
| 190 | 
            -
                    version: 0. | 
| 190 | 
            +
                    version: 0.22.0
         | 
| 191 191 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 192 192 | 
             
              name: simplecov-cobertura
         | 
| 193 193 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -274,9 +274,9 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 274 274 | 
             
                  version: '3.0'
         | 
| 275 275 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 276 276 | 
             
              requirements:
         | 
| 277 | 
            -
              - - " | 
| 277 | 
            +
              - - ">="
         | 
| 278 278 | 
             
                - !ruby/object:Gem::Version
         | 
| 279 | 
            -
                  version:  | 
| 279 | 
            +
                  version: '0'
         | 
| 280 280 | 
             
            requirements: []
         | 
| 281 281 | 
             
            rubygems_version: 3.4.10
         | 
| 282 282 | 
             
            signing_key:
         |