Skip to content
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

Use User-Agent header to have analytics #150

Closed
20 tasks done
curquiza opened this issue Nov 4, 2021 · 12 comments
Closed
20 tasks done

Use User-Agent header to have analytics #150

curquiza opened this issue Nov 4, 2021 · 12 comments
Assignees
Labels
enhancement New feature or request

Comments

@curquiza
Copy link
Member

curquiza commented Nov 4, 2021

Replaces: #58

Currently, we have no analytics about integrations.
As a first step, we would like to know the proportion of each integration.

Thanks to the new spec implementation, the User-Agent header will be sent to Segment (and then to Amplitude) via the MeiliSearch server 🎉

Here is the expected format:

User-Agent: Meilisearch <language> (<version>)

-> The version should be in parenthesis and the information must start with Meilisearch

Ex:

User-Agent: Meilisearch JS (v0.22.1)

If multiple integrations are used during the user path, they should be separated by ;.

User-Agent: Meilisearch Rails (v0.2.3) ; Meilisearch Ruby (v0.16.0)

-> In this example, it means the Ruby SDK should be able to accept a custom User-Agent that the Rails plugin can pass when initializing the Ruby client.


First step: do it basically in all the SDKs

The SDKs should send the expected User-Agent header. In this step, no need to implement a way to pass a custom User-Agent header.
We only need to find a smart way (if possible) to pass the version, and/or to check the version is well updated for each release (using the .github/script/check-release.sh script for example)

Second step: do it in every integration

This step involves some SDKs (JS, PHP, Ruby, and probably more in the future) that can accept a custom User-Agent header. This needs an internal discussion for implementation and, why not, might deserve another issue.

@curquiza curquiza added the need approval A final choice is suggested label Nov 4, 2021
@curquiza
Copy link
Member Author

curquiza commented Nov 4, 2021

FYI @meilisearch/product-team

@bidoubiwa
Copy link
Contributor

bidoubiwa commented Nov 11, 2021

Overwrite initial user-agent

User-agent may already contain some content. For example when making a request from my browser, the back-end server receives the following user-agent

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

Unfortunately, I can not append new content to the end of the user-agent. Meaning that if I need to send MeiliSearch JS (v0.22.1) as a user agent, I will override the initial user-agent value. The receiver of the request will lose these information (example above).

Code example:

Front end request:

let myHeaders = new Headers();
myHeaders.append('user-agent', 'MeiliSearch JS (v0.22.1)');

fetch('/test',  {
  headers: myHeaders
}).then(res => console.log(res))

Back-end receiver

app.get('/test', (req, res) => {
  console.log(req.headers["user-agent"])
})

The console.log will output MeiliSearch JS (v0.22.1) instead of Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36

Unable to modify user-agent in chrome

Now, this is an unfortunate problem. user-agent used to be in a list of forbidden header names. It is now allowed as per the spec.

It has not yet been implemented in chromium based browsers (thus chrome also). See issue dating from 2015. Meaning that the above code sample results in chrome silently ignoring my user-agent update thus returning the original user-agent:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36.

These tests have been done with the standard library Fetch. I tried with the standard library XMLHttpRequest as well. In this case, changes are ignored as well but an error is outputted in my browser console: Refused to set unsafe header "user-agent"

  const xhttp = new XMLHttpRequest();

  xhttp.onload = function() {
    console.log(this.responseText)
  }
  xhttp.open("GET", "/test", true);
  xhttp.setRequestHeader('user-agent', "plouf") // Refused to set unsafe header "user-agent"
  xhttp.send();

Conclusion

Do we want to keep the context of the browser? If yes, then we cannot implement this feature.

Do we accept to lose the context?
We overwrite the user-agent with information about the context in which the request is made (ex: MeiliSearch + instantSearch) and we lose the context of the browser. Exactly like described by @curquiza

What about chrome
The solution we would implement that overwrites the user-agent does not throw on chrome when using the Fetch API. It is just silently ignored and returns the default user-agent. Meanwhile, it does work on all other browsers. So it introduces an enhancement that works in some cases and is just ignored in others.

@gmourier
Copy link
Member

Hi @bidoubiwa! Thank you for this complete and accurate feedback.

If I understand correctly, it's mostly languages running on Chrome that won't be able to send their User-Agent using the conforming header.

The solution could be to ask for a custom user-agent, we would like to avoid it for several reasons. It is possible that some HTTP clients will encounter problems by not being able to override the user-agent. It is also possible that some proxies will remove a custom header by default.

In the vast majority of cases, I have the impression that we won't have the information about the use of js SDKs via chrome. Am I wrong?

If so, we can make the assumption that it is the most used. There is no real need to know if it should be maintained or prioritized in my opinion but you tell me.

The idea behind this, if I'm not mistaken @curquiza, was to know to what extent we should prioritize efforts on SDKs that probably wouldn't be used.

@curquiza
Copy link
Member Author

After the discussion with @bidoubiwa and @gmourier

We keep User-Agent header for the moment to forward the SDK information into MeiliSearch. Each SDK should fill the User-Agent header.
The other integrations should be done in a second time since it will involve more implementation in the code base (cf the current issue)

The problem on Chrome we have for front-end is still present and should be solved in the future, for example by sending the analytics information as query parameters. We need first to ensure the first implementation we've done works.

TLDR;
The current issue description is still what we need to implement, nothing has changed, except we are more aware of some limits.

@bidoubiwa
Copy link
Contributor

I agree with the proposal. Even without the information from chrome we still at least receive some information :)
Just to be sure, the separation with the ; it should be prefixed and sufixed with a whitespace ?

@gmourier
Copy link
Member

gmourier commented Dec 6, 2021

I agree with the proposal. Even without the information from chrome we still at least receive some information :) Just to be sure, the separation with the ; it should be prefixed and sufixed with a whitespace ?

No need to add whitespaces to compute it. On the core side, we separate User-Agent with ;. @irevoire do you confirm? It is rather for readability needs when inspecting HTTP headers with a naked eye. Then it's very specific. Maybe we don't need to spend time on this, maybe the libs do it automatically if you pass a user-agent array?

@irevoire
Copy link
Member

Yes we split the user-agent on the ; and we put everything in a Set 👍

bors bot added a commit to meilisearch/meilisearch-dart that referenced this issue Jan 20, 2022
129: Feature/Analytics r=brunoocasali a=brunoocasali

- Expose headers method 
- Create a `Version` class to easily access package version data.
- Add `Version.qualifiedVersion` to headers

After the implementation the MeiliSearch server is outputting the expected 💯 
`[2022-01-19T18:33:47Z INFO  actix_web::middleware::logger] 172.17.0.1:57704 "GET /keys HTTP/1.1" 200 14 "-" "MeiliSearch Dart (v0.5.0)" 0.000118`


_DISCLAIMER:_ I've tried other ways to collect these data eg. 
- Reading from pubspec.yaml:
  - This is not supported by dart native and flutter in the same way.  
- Generating the version class dynamically:
  - Due to the time constraint I was not able to do this, actually, I don’t know for sure if this is going to work exactly the same way as it is now.   


Add dart support as requested here meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
meili-bors bot added a commit to meilisearch/meilisearch-ruby that referenced this issue Jan 27, 2022
292: Feature/Analytics r=brunoocasali a=brunoocasali

- Add `User-Agent` inside the pre-defined headers
 
Add ruby support as requested here meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
meili-bors bot added a commit to meilisearch/meilisearch-ruby that referenced this issue Jan 31, 2022
292: Feature/Analytics r=brunoocasali a=brunoocasali

- Add `User-Agent` inside the pre-defined headers
 
Add ruby support as requested here meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
bors bot added a commit to meilisearch/meilisearch-dotnet that referenced this issue Feb 8, 2022
233: Feature/Analytics r=brunoocasali a=brunoocasali

- Create the `Version` class
- Load the current version from the csproj data through the `GetType>Assembly>GetName>Version` (I don’t really know if this could have some potential of not working in some cases, let me know that).


> The Github Action for some reason stopped working, I fixed the version of the .net in order to fix the problem.

Related to meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
bors bot added a commit to meilisearch/meilisearch-php that referenced this issue Feb 14, 2022
293: Add a func to main class with qualified version r=alallema a=brunoocasali

- Add a function to respond with the full qualified version for the PHP SDK: `"Meilisearch PHP (v0.21.0)"`.

Related to meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
brunoocasali added a commit to meilisearch/meilisearch-dotnet that referenced this issue Feb 14, 2022
bors bot added a commit to meilisearch/meilisearch-php that referenced this issue Feb 14, 2022
294: Feature/Analytics r=alallema a=brunoocasali

- Add a default `User-Agent` header containing the qualified version name for this package.

Related to meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
bors bot added a commit to meilisearch/meilisearch-dotnet that referenced this issue Feb 14, 2022
241: Feature/Analytics r=brunoocasali a=brunoocasali

- Add custom User-Agent to every HTTP call.

Related to meilisearch/integration-guides#150


Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
@brunoocasali
Copy link
Member

brunoocasali commented Feb 17, 2022

List of the qualified names used in the headers:

  • Meilisearch .NET
  • Meilisearch PHP
  • Meilisearch Ruby
  • Meilisearch Dart
  • Meilisearch JavaScript
  • Meilisearch Rust
  • Meilisearch Java
  • Meilisearch Go
  • Meilisearch Swift
  • Meilisearch Python

And:

  • Meilisearch Rails
  • Meilisearch Symfony
  • Meilisearch Firebase
  • Meilisearch Strapi
  • Meilisearch Gatsby
  • Meilisearch Laravel Scout
  • Meilisearch docs-searchbar.js
  • Meilisearch instant-meilisearch
  • Meilisearch DocsScraper

@gmourier
Copy link
Member

gmourier commented Feb 21, 2022

Hi @brunoocasali! Thanks for the list!

It seems it's missing Meilisearch Python here. Am I right?

Also, what's about Laravel Scout, Firebase, and Gatsby plugins? Could be nice to know it also!

@brunoocasali
Copy link
Member

Hi @brunoocasali! Thanks for the list!

It seems it's missing Meilisearch Python here. Am I right?

Also, what's about Laravel Scout, Firebase, and Gatsby plugins? Could be nice to know it also!

Oh yeah, I forgot to add them thanks for the reminder. About the Laravel, I'm not sure if we will be able to add the customization there.

bors bot added a commit to meilisearch/meilisearch-rust that referenced this issue May 5, 2022
254: Feature/Analytics r=brunoocasali a=brunoocasali

- Add `User-Agent` inside the pre-defined headers.

Add Rust support as requested here meilisearch/integration-guides#150


Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
bors bot added a commit to meilisearch/meilisearch-rust that referenced this issue May 6, 2022
254: Feature/Analytics r=brunoocasali a=brunoocasali

- Add `User-Agent` inside the pre-defined headers.

Add Rust support as requested here meilisearch/integration-guides#150


Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
gmourier added a commit to meilisearch/specifications that referenced this issue May 16, 2022
* Instance Options (#119)

* Add instance options spec

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Numeric title + add dump options

* Add link to dump spec

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Add title numerotations

* Add telemetry for new options

* Apply changes after the review

* Update text/0119-instance-options.md

* Update text/0119-instance-options.md

Co-authored-by: Many <legendre.maxime.isn@gmail.com>

* Update text/0119-instance-options.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Update text/0119-instance-options.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Change naming after the review

* Update text/0034-telemetry-policies.md

* Update text/0034-telemetry-policies.md

* Update text/0034-telemetry-policies.md

* Update text/0034-telemetry-policies.md

* Apply suggestions from code review

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Update text/0119-instance-options.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

* Update text/0119-instance-options.md

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>
Co-authored-by: Many <legendre.maxime.isn@gmail.com>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Settings API - v0.26.0 state (#123)

* Add a Settings API specification file

* Add distinct-attribute-setting-api.md

* Add displayed-attributes and searchable-attributes specification file

* Add stop-words setting api

* Add synonyms setting api

* Rename spec files and fix some typos

* Add ranking rules setting api

* Add filterable-attributes and sortable-attributes settings API

* Add a Triggering Documents Re-Indexing technical section

* Rephrase 202 Accepted Response for POST Methods

* Apply Triggering Documents Re-Indexing Technical part on related sub settings

* Update synonyms setting api file

* Precise and rephrase some sentences

* Remove bullet point title

* Add limitation about manually specifying searchableAttributes

* Update spec template according to our current usage (#127)

* Update spec template according to our current usage

* Update text/0000-specification-template.md

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Remove bullet point dedicated to title

* Rename Technical Aspects to Technical Details

Co-authored-by: Guillaume Mourier <guillaume@meilisearch.com>

* Documents API (#133)

* Catch-up documents api specification

* Add precisions and examples

* Apply suggestions from code review

Co-authored-by: Many <legendre.maxime.isn@gmail.com>

Co-authored-by: Many <legendre.maxime.isn@gmail.com>

* Stats API (#134)

* Add Stats API specification

* Rename spec file with pr number

* Clean typo, add precisions and fix inner linking

* Apply suggestions from code review

Co-authored-by: maryamsulemani97 <90181761+maryamsulemani97@users.noreply.github.com>

* Change order of API endpoints

Co-authored-by: maryamsulemani97 <90181761+maryamsulemani97@users.noreply.github.com>

* Errors - Add variant for `invalid_filter`/`invalid_sort` when related settings are empty (#125)

* Add variant for invalid_sort and invalid_filter errors when settings are empty

* Update text/0061-error-format-and-definitions.md

Co-authored-by: gui machiavelli <hey@guimachiavelli.com>

Co-authored-by: gui machiavelli <hey@guimachiavelli.com>

* Add missing "v" in the user-agent data (#136)

Following the issue meilisearch/integration-guides#150 there is a "v" before the version of the package.

* Indexes API (#132)

* Catch-up Indexes API

* Add details by field for an Index API Resource

* fix typo

* Add future possibilities

* Apply suggestions from code review

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Add precisions from review

* lowercase type

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Remove never-implemented and deprecated 0042-paginated-search.md (#147)

* Settings API - Typo Tolerance (#117)

* Draft file for Typo Tolerance specification

* rename spec file

* Rename specification

* draft

* Add open-api.yaml prototype

* Add typoTolerance component on POST search

* Add typoTolerance object into search api parameters

* fix typos

* remove the past tense

* Add typoTolerance GET query parameters

* Fix description

* Add explanations for disableOnWords property

* Update spec href

* Describe indexes/:index_uid/settings/typo-tolerance endpoint

* Explain why it is useful to expose typo tolerance settings at search time

* Remove typoTolerance properties at search time

* Add a future possiblity to change POST verb to PATCH to edit a settings partially

* Sync spec with telemetry

* Mark TODO on technical details and rework structure of specification

* Specify properties required to false to allow partial updates

* Add error definitions for typoTolerance API resource properties

* Rename spec file

* Restore deleted metric

* Update text/0117-typo-tolerance-settings-api.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Update text/0117-typo-tolerance-settings-api.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>

* Replace W to w in telemtry

* Apply consistency on new errors message

* fix typo

* Add Async Errors and Lazy Index Creation

* Rename telemetry nodes

* Mention case insensivity of disableOnWords parameter

* Describes synchronous (type-checking)  and asynchronous (business logic) errors

* Add examples for minWordSizeFor1Typo and minWordSizeFor2Typos

* Elaborate on examples

* Remove title bullet point

* Apply naming suggestions

* Apply naming changes on telemetry and miss on OpenAPI

* Branch typo sub-ressource to settings-api specification

* Fix typo (lul)

* Add Technical Details

* Apply suggestions from code review

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Replace minWordSizeForXTypos fields by a minWordSizeForTypos object

* Update text/0034-telemetry-policies.md

Co-authored-by: ad hoc <postma.marin@protonmail.com>

* Apply suggestions from code review

Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>

* Remove dedicated error for type checking

* Update text/0034-telemetry-policies.md

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>

* Bring naming changes

* Fix metrics name for typo_tolerance

* Update text/0034-telemetry-policies.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>
Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
Co-authored-by: ad hoc <postma.marin@protonmail.com>
Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>

* Data Types - Add Nested Fields Support (#121)

* Add a draft spec with nested fields flattening examples

* Consitent phrasing

* Fix markdown syntax

* Add null section

* Add Object example section

* Apply suggestions from code review

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Rename spec file to PR id

* Add special searchableAttributes default case with flattening alg

* Rephrase document structure representation

* Add a dotnotation section

* Add dot-notation section

* Update text/0121-data-types.md

Co-authored-by: Quentin de Quelen <quentin@meilisearch.com>

* Add Future Possibilities

* Rework nested notation sections

* Fix TODO and mention the . notation and all properties notation

* Add a edge case section

* Fix missing block code marker

* Update text/0123-ranking-rules-setting-api.md

Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Apply suggestions from code review

Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>
Co-authored-by: Clément Renault <renault.cle@gmail.com>

* Fix section number

* Remove unclear sentence

* Remove dedicated object section

Co-authored-by: Clément Renault <renault.cle@gmail.com>
Co-authored-by: Quentin de Quelen <quentin@meilisearch.com>
Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>

* Search API - Formatting Search Results (#120)

* Draft a revamp of the formatting search results spec

* Removes formatting-search-results specification

* wip

* Fix links

* Add precision

* Update OpenAPI

* Fix sentences

* Add consistency

* Add details and fix sentences

* Fix default value in OpenAPI spec

* Add Future Possibilities for _matchesInfo

* Remove bullet point title

* Add wip examples

* Add _formatted behavior regarding attributesToRetrieve, attributesToCrop and attributesToHighlight

* Apply suggestions from code review

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Fix typo

* Mention no effect case of  cropMarker / cropLength / highlightPostTag / highlightPreTag  on attributesToCrop  & attributesToHighlight

* Re-explain _formatted in details

* Mention Synonyms

* Add precision after team feedback

* Apply suggestions from code review

Co-authored-by: gui machiavelli <hey@guimachiavelli.com>

* Add precisions

* Add boolean analytics for fields dedicated to customize formatting of search results behaviors

* Precise behavior for _formatted

* Add clearer explanations for the cropping algorithm and the fact that it keep the phrase context when extending around

* Apply suggestions from code review

Co-authored-by: Many <legendre.maxime.isn@gmail.com>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>
Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>

* Precise highlighting around every matched query term

* Apply suggestions from code review

Co-authored-by: gui machiavelli <hey@guimachiavelli.com>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Precise cropLength behavior when 0 is specified

* Remove filter-and-facet-behavior spec to merge it into search-api, and correct some types description

* Improve formatted spec (#146)

* Improve formatted spec

* Update text/0118-search-api.md

Co-authored-by: Tamo <irevoire@protonmail.ch>

* Update text/0118-search-api.md

Co-authored-by: Tamo <irevoire@protonmail.ch>

* Update text/0118-search-api.md

Co-authored-by: Tamo <irevoire@protonmail.ch>

* Update text/0118-search-api.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Update text/0118-search-api.md

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Improve according to reviews

Co-authored-by: Tamo <irevoire@protonmail.ch>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>

* Add missing precision for highlightPostTag

* fix broken links

Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>
Co-authored-by: gui machiavelli <hey@guimachiavelli.com>
Co-authored-by: Many <legendre.maxime.isn@gmail.com>
Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>
Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>
Co-authored-by: Tamo <irevoire@protonmail.ch>

* Bump API to v0.27.0 version

Co-authored-by: Clémentine Urquizar - curqui <clementine@meilisearch.com>
Co-authored-by: Many <legendre.maxime.isn@gmail.com>
Co-authored-by: cvermand <33010418+bidoubiwa@users.noreply.github.com>
Co-authored-by: maryamsulemani97 <90181761+maryamsulemani97@users.noreply.github.com>
Co-authored-by: gui machiavelli <hey@guimachiavelli.com>
Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
Co-authored-by: ad hoc <postma.marin@protonmail.com>
Co-authored-by: Tommy <68053732+dichotommy@users.noreply.github.com>
Co-authored-by: Clément Renault <renault.cle@gmail.com>
Co-authored-by: Quentin de Quelen <quentin@meilisearch.com>
Co-authored-by: Tamo <irevoire@protonmail.ch>
meili-bors bot added a commit to meilisearch/meilisearch-ruby that referenced this issue Aug 1, 2022
354: Support custom agents r=brunoocasali a=brunoocasali

Related to meilisearch/integration-guides#150 take #2

We will use this door to send information from the Rails gem.

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
bors bot added a commit to meilisearch/meilisearch-rails that referenced this issue Aug 1, 2022
179: Feature/Analytics r=brunoocasali a=brunoocasali

Merge after meilisearch/meilisearch-ruby#354

With both PRs, we can send a custom header with the name of this gem according to meilisearch/integration-guides#150.

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
bors bot added a commit to meilisearch/meilisearch-php that referenced this issue Aug 16, 2022
369: Add the ability to provide extra custom user-agents r=brunoocasali a=brunoocasali

Related to meilisearch/integration-guides#150

Co-authored-by: Bruno Casali <brunoocasali@gmail.com>
@bidoubiwa
Copy link
Contributor

I'm adding the missing docs-scraper repo

meili-bors bot added a commit to meilisearch/meilisearch-python that referenced this issue Jun 1, 2023
771: Adding a header parameters to the client constructor r=alallema a=alallema

To enable and facilitate the integration of a user-agent into all SDKs. [see related issue](meilisearch/integration-guides#150) and specifically for [the docs-scraper integration](meilisearch/docs-scraper#387) a new parameter client_agent is now available in the client constructor.



Co-authored-by: alallema <amelie@meilisearch.com>
Co-authored-by: Amélie <alallema@users.noreply.github.com>
Co-authored-by: Paul Sanders <psanders1@gmail.com>
@brunoocasali
Copy link
Member

We fuck*n made it, team. You're the best! 🎉🎉🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants