Fast string matcher conceived for quick replies chat and multiple choice scenario.
Type-Level RegExp parser, matcher and permutation resolver
Transform GLOB patterns to JavaScript regular expressions for fast file path matching.
Efficient path tracking and pattern matching for XML/JSON parsers
Match balanced character pairs, like "{" and "}"
Match substrings on the left or right of a given index, ignoring whitespace
Match a Unicode property or property alias to its canonical property name per the algorithm used for RegExp Unicode property escapes in ECMAScript.
Rich matchers inspired by Hamcrest. Useful for generating helpful assertion failure messages in tests.
Match a Unicode property or property alias to its canonical property name per the algorithm used for RegExp Unicode property escapes in ECMAScript.
Simple, expected, and deterministic best-match sorting of an array in JavaScript
Match a pattern within a stream
Match balanced character pairs, like "{" and "}"
It's a very fast and efficient glob library for Node.js
npm package for https://github.com/google/diff-match-patch
Extends `minimatch.match()` with support for multiple patterns
Match human-quality input to potential matches by edit distance.
Match BCP 47 language tags with language ranges per RFC 4647
Fast and tiny fuzzy-search utility
Regular expression for matching ANSI escape codes
A tiny, PEG-like system for building language grammars with regexes.
A regex to match any full character, considering weird character ranges.
Get the first path that exists on disk of multiple paths
The magical sticky regex-based parser generator 🧙
A better opn. Reuse the same tab on Chrome for 👨💻.
sportdb-quick - football.txt (quick) match readers and more
The Exa gem implements a lightweight interface to the Exa.ai API. Exa provides powerful neural search capabilities that go beyond traditional keyword matching to understand semantic meaning and context. This gem supports search, find similar, answer, and contents endpoints. It includes both a Ruby API and a command-line interface (exa) for quick searches from the terminal.
Required is a utility to require all files in a directory. Why would one want to require a whole bunch of files at once? I have used this gem on 2 projects to: - require dozens of jar files when working on a JRuby project - pull in all files before running code coverage (rcov), to find code that is otherwise dead/untouched Options for required include the ability to recursively descend through subdirectories, include/exclude files based on pattern matching, and to specify the order of requires based on filename. An array of all the files that were loaded is returned. Quick example: require 'required' required "some/path/to/dir" See the README for more examples, and description of options.
The 'pg_search_multiple_highlight' gem extends the functionality of the popular 'pg_search' gem to overcome its limitation when performing searches against multiple columns and attempting to highlight results. The core issue arises when using the ':highlight' option within the ':tsearch' scope on multiple columns. This gem addresses this limitation by introducing the ':multiple_highlight' option, offering a comprehensive solution for highlighting results across multiple columns. Key Features: New Scope Option: The gem introduces the ':multiple_highlight' scope option, allowing users to perform searches on multiple columns and highlight matching terms. Enhanced Search Results: The gem enables the extraction of highlighted results from multiple columns, providing a unified view of highlighted content. Usage Convenience: Users can easily integrate the ':multiple_highlight' option into their existing 'pg_search' queries by calling the '.with_pg_search_multiple_highlight' method on the search object. Flexible Customization: The gem's options can be tailored to match specific highlighting requirements, such as custom start and stop markers for highlighting. Comprehensive Documentation: The README file explains the limitations of 'pg_search' regarding highlighting, demonstrates how the ':multiple_highlight' option resolves this issue, and offers clear usage examples for quick integration.
# Quick Start The Owner API uses the JSON format, and must be accessed over a [secure connection](https://en.wikipedia.org/wiki/HTTPS). Let’s assume that the access token provided by your account manager is “TOKEN”. Here’s how to get the list of ids of all your invoices from the first week of August with a shell script: ```bash query="end_date=2018-08-08T00%3A00%3A00%2B00%3A00&start_date=2018-08-01T00%3A00%3A00%2B00%3A00" curl -i "https://api-eu.getaround.com/owner/v1/invoices?${query}" \ -H "Authorization: Bearer TOKEN" \ -H "Accept:application/json" \ -H "Content-Type:application/json" ``` And here’s how to get the invoice with the id 12345: ```bash curl -i "https://api-eu.getaround.com/owner/v1/invoices/12345" \ -H "Authorization: Bearer TOKEN" \ -H "Accept: application/json" \ -H "Content-Type: application/json"" ``` See the [endpoints section](#tag/Invoices) of this guide for details about the response format. Dates in request params should follow the ISO 8601 standard. # Authentication All requests must be authenticated with a [bearer token header](https://tools.ietf.org/html/rfc6750#section-2.1). You token will be sent to you by your account manager. Unauthenticated requests will return a 401 status. # Pagination The page number and the number of items per page can be set with the “page” and “per_page” params. For example, this request will return the second page of invoices, and 50 invoices per page: `https://api-eu.getaround.com/owner/v1/invoices?page=2&per_page=50` Both of these params are optional. The default page size is 30 items. The Getaround Owner API follows the [RFC 8288 convention](https://datatracker.ietf.org/doc/html/rfc8288) of using the `Link` header to provide the `next` page URL. Please don't build the pagination URLs yourself. The `next` page will be missing when you are requesting the last available page. Here's an example response header from requesting the second page of invoices `https://api-eu.getaround.com/owner/v1/invoices?page=2&per_page=50` ``` Link: <https://api-eu.getaround.com/owner/v1/invoices?page=3&per_page=50>; rel="next" ``` # Throttling policy and Date range limitation We have throttling policy that prevents you to perform more than 100 requests per min from the same IP. Also, there is a limitation on the size of the range of dates given in params in some requests. All requests that need start_date and end_date, do not accept a range bigger than 30 days. # Webhooks Getaround can send webhook events that notify your application when certain events happen on your account. This is especially useful to follow the lifecycle of rentals, tracking for example bookings or cancellations. ### Setup To set up an endpoint, you need to define a route on your server for receiving events, and then <a href="mailto:owner-api@getaround.com">ask Getaround</a> to add this URL to your account. To acknowledge receipt of a event, your endpoint must: - Return a `2xx` HTTP status code. - Be a secure `https` endpoint with a valid SSL certificate. ### Testing Once Getaround has set up the endpoint, and it is properly configured as described above, a test `ping` event can be sent by clicking the button below: <form action="/docs/api/owner/fire_ping_webhook" method="post"><input type="submit" value="Send Ping Event"></form> You should receive the following JSON payload: ```json { "data": { "ping": "pong" }, "type": "ping", "occurred_at": "2019-04-18T08:30:05Z" } ``` ### Retries Webhook deliveries will be attempted for up to three days with an exponential back off. After that point the delivery will be abandoned. ### Verifying Signatures Getaround will also provide you with a secret token, which is used to create a hash signature with each payload. This hash signature is passed along with each request in the headers as `X-Drivy-Signature`. Suppose you have a basic server listening to webhooks that looks like this: ```ruby require 'sinatra' require 'json' post '/payload' do push = JSON.parse(params[:payload]) "I got some JSON: #{push.inspect}" end ``` The goal is to compute a hash using your secret token, and ensure that the hash from Getaround matches. Getaround uses an HMAC hexdigest to compute the hash, so you could change your server to look a little like this: ```ruby post '/payload' do request.body.rewind payload_body = request.body.read verify_signature(payload_body) push = JSON.parse(params[:payload]) "I got some JSON: #{push.inspect}" end def verify_signature(payload_body) signature = 'sha1=' + OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha1'), ENV['SECRET_TOKEN'], payload_body) return halt 500, "Signatures didn't match!" unless Rack::Utils.secure_compare(signature, request.env['HTTP_X_DRIVY_SIGNATURE']) end ``` Obviously, your language and server implementations may differ from this code. There are a couple of important things to point out, however: No matter which implementation you use, the hash signature starts with `sha1=`, using the key of your secret token and your payload body. Using a plain `==` operator is not advised. A method like secure_compare performs a "constant time" string comparison, which renders it safe from certain timing attacks against regular equality operators. ### Best Practices - **Acknowledge events immediately**. If your webhook script performs complex logic, or makes network calls, it’s possible that the script would time out before Getaround sees its complete execution. Ideally, your webhook handler code (acknowledging receipt of an event by returning a `2xx` status code) is separate of any other logic you do for that event. - **Handle duplicate events**. Webhook endpoints might occasionally receive the same event more than once. We advise you to guard against duplicated event receipts by making your event processing idempotent. One way of doing this is logging the events you’ve processed, and then not processing already-logged events. - **Do not expect events in order**. Getaround does not guarantee delivery of events in the order in which they are generated. Your endpoint should therefore handle this accordingly. We do provide an `occurred_at` timestamp for each event, though, to help reconcile ordering.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.