Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Webex Events provides a range of additional SDKs to accelerate your development process. They allow a standardized way for developers to interact with and leverage the features and functionalities. Pre-built code modules will help access the APIs with your private keys, simplifying data gathering and update flows.
Via command line:
gem install webex-events
In your Gemfile:
gem 'webex-events'
In your ruby script:
require 'webex/events'
Webex::Events::Config.configure do |config|
config.access_token = '<access_token>' # sk_live_ab34... or sk_test_cda1...
# Please set your custom configs, if the default configuration does not meet your needs.
config.max_retries = 5 # Default is 5. Do not set it if you want the default configuration.
config.timeout = 30 # Default is 30 seconds
config.open_timeout = 10 # Default is 10 seconds
config.write_timeout = 60 # Default is 60 seconds
config.logger = Logger.new($stdout, level: Logger::DEBUG) # By default logger is off.
end
query = <<-GQL
query EventsConnection($first: Int) {
eventsConnection(first: $first){
edges{
cursor
node{
id
name
groups{
id
name
}
}
}
}
}
GQL
response = Webex::Client.query(
query: query,
variables: { first: 20 },
operation_name: 'EventsConnection',
options: {}
)
event = response.body["data"]["eventsConnection"]["edges"][0]
If the request is successful, Webex::Client.query
will return Webex::Request
object which has the following methods.
Method | Type |
---|---|
status | Integer |
headers | Hash |
body | Hash |
request_headers | Hash |
request_body | Hash |
url | String |
retry_count | Integer |
time_spent_in_ms | Integer |
rate_limiter | Webex::RateLimiter |
For non 200 status codes, an exception is raised for every status code such as Webex::Errors::ServerError
for server errors.
For the flow-control these exceptions should be handled like the following. This is an example for 429
status code.
For the full list please refer to this file.
begin
Webex::Client.query(
query: query,
variables: { first: 20 },
operation_name: 'EventsConnection',
options: {}
)
rescue Webex::Errors::DailyQuotaIsReachedError
# Do something here
rescue Webex::Errors::SecondBasedQuotaIsReachedError => err
sleep_time = err.response.headers['X-Secondly-Retry-After'].to_i # In milliseconds
sleep sleep_time / 1000.to_f
retry
end
By default, Webex::Client.query
is retriable under the hood. It retries the request several times for the following exceptions.
Webex::Errors::RequestTimeoutError => 408
Webex::Errors::ConflictError => 409
Webex::Errors::SecondBasedQuotaIsReachedError => 429
Webex::Errors::BadGatewayError => 502
Webex::Errors::ServiceUnavailableError => 503
Webex::Errors::GatewayTimeoutError => 504
Webex::Client.do_introspection_query
The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. When doing a mutation request, use an idempotency key. If a connection error occurs, you can repeat the request without risk of creating a second object or performing the update twice.
To perform mutation request, you must add a header which contains the idempotency key such as
Idempotency-Key: <your key>
. The SDK does not produce an Idempotency Key on behalf of you if it is missed. Here is an example
like the following:
query = <<-GQL
mutation TrackDelete($input: TrackDeleteInput!) {
trackDelete(input: $input) {
success
}
}
GQL
begin
Webex::Client.query(
query: query,
variables: { input: { ids: [1,2,3], eventId: 1 } },
operation_name: 'TrackDelete',
options: { idempotency_key: SecureRandom.uuid }
)
rescue Webex::Errors::ConflictError # Conflict errors are retriable, but to guarantee it you can handle the exception again.
sleep 0.2
retry
end
Webex Events collects telemetry data, including hostname, operating system, language and SDK version, via API requests. This information allows us to improve our services and track any usage-related faults/issues. We handle all data with the utmost respect for your privacy. For more details, please refer to the Privacy Policy at https://www.cisco.com/c/en/us/about/legal/privacy-full.html
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
Please see the contributing guidelines.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the Webex Events API project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.
FAQs
Unknown package
We found that webex-events demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.