client-analytics.esm.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { createAuth, AuthMode, addMethods, encode } from '@algolia/client-common';
  2. import { createTransporter } from '@algolia/transporter';
  3. import { MethodEnum } from '@algolia/requester-common';
  4. const createAnalyticsClient = options => {
  5. const region = options.region || 'us';
  6. const auth = createAuth(AuthMode.WithinHeaders, options.appId, options.apiKey);
  7. const transporter = createTransporter({
  8. hosts: [{ url: `analytics.${region}.algolia.com` }],
  9. ...options,
  10. headers: {
  11. ...auth.headers(),
  12. ...{ 'content-type': 'application/json' },
  13. ...options.headers,
  14. },
  15. queryParameters: {
  16. ...auth.queryParameters(),
  17. ...options.queryParameters,
  18. },
  19. });
  20. const appId = options.appId;
  21. return addMethods({ appId, transporter }, options.methods);
  22. };
  23. const addABTest = (base) => {
  24. return (abTest, requestOptions) => {
  25. return base.transporter.write({
  26. method: MethodEnum.Post,
  27. path: '2/abtests',
  28. data: abTest,
  29. }, requestOptions);
  30. };
  31. };
  32. const deleteABTest = (base) => {
  33. return (abTestID, requestOptions) => {
  34. return base.transporter.write({
  35. method: MethodEnum.Delete,
  36. path: encode('2/abtests/%s', abTestID),
  37. }, requestOptions);
  38. };
  39. };
  40. const getABTest = (base) => {
  41. return (abTestID, requestOptions) => {
  42. return base.transporter.read({
  43. method: MethodEnum.Get,
  44. path: encode('2/abtests/%s', abTestID),
  45. }, requestOptions);
  46. };
  47. };
  48. const getABTests = (base) => {
  49. return (requestOptions) => {
  50. return base.transporter.read({
  51. method: MethodEnum.Get,
  52. path: '2/abtests',
  53. }, requestOptions);
  54. };
  55. };
  56. const stopABTest = (base) => {
  57. return (abTestID, requestOptions) => {
  58. return base.transporter.write({
  59. method: MethodEnum.Post,
  60. path: encode('2/abtests/%s/stop', abTestID),
  61. }, requestOptions);
  62. };
  63. };
  64. export { addABTest, createAnalyticsClient, deleteABTest, getABTest, getABTests, stopABTest };