@meltwater/conversations-api-services 1.1.0 → 1.1.1

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.
@@ -10,6 +10,26 @@ var _loggerHelpers = require("../../lib/logger.helpers.js");
10
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
11
  const THREADS_URL = 'https://graph.threads.net/v1.0';
12
12
  const THREADS_PUBLISH_URL = `${THREADS_URL}/me/threads_publish`;
13
+ async function confirmCreationId(accessToken, creationId, logger) {
14
+ let retry = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
15
+ let response = {};
16
+ response = await _superagent.default.get(`${THREADS_URL}/${creationId}`).set('Accept', 'application/json').set('Content-Type', 'application/json').query({
17
+ access_token: accessToken,
18
+ fields: 'id,status,error_message'
19
+ }).send();
20
+ if (response.body.status == 'IN_PROGRESS' && retry < 11) {
21
+ // small wait for first attempt, sometimes its just a text post that doesn't take long
22
+ (0, _loggerHelpers.loggerInfo)(logger, `Creation ID is in progress ${creationId} retry ${retry} Waiting ${retry ? 60 : 10} seconds`);
23
+ await new Promise(resolve => setTimeout(resolve, retry ? 60000 : 10000));
24
+ return await confirmCreationId(accessToken, creationId, logger, retry + 1);
25
+ } else if (response.body.status == 'IN_PROGRESS' && retry == 11) {
26
+ let error = new Error(`Creation ID is in progress BUT TAKING TOO LONG ${creationId}`);
27
+ error.code = response.status;
28
+ throw error;
29
+ }
30
+ (0, _loggerHelpers.loggerDebug)(logger, 'Threads Response status', response.status);
31
+ return response;
32
+ }
13
33
  async function requestApi(apiUrl, accessToken, inReplyToId, text, asset, logger) {
14
34
  let response = {};
15
35
  try {
@@ -39,6 +59,7 @@ async function requestApi(apiUrl, accessToken, inReplyToId, text, asset, logger)
39
59
  };
40
60
  }
41
61
  const containerResponse = await _superagent.default.post(apiUrl).set('Accept', 'application/json').set('Content-Type', 'application/json').query(query).send();
62
+ await confirmCreationId(accessToken, containerResponse.body.id, logger);
42
63
  response = await _superagent.default.post(THREADS_PUBLISH_URL).set('Accept', 'application/json').set('Content-Type', 'application/json').query({
43
64
  access_token: accessToken,
44
65
  creation_id: containerResponse.body.id
@@ -3,6 +3,26 @@ import { removePrefix } from '../../lib/externalId.helpers.js';
3
3
  import { loggerDebug, loggerError, loggerInfo } from '../../lib/logger.helpers.js';
4
4
  const THREADS_URL = 'https://graph.threads.net/v1.0';
5
5
  const THREADS_PUBLISH_URL = `${THREADS_URL}/me/threads_publish`;
6
+ async function confirmCreationId(accessToken, creationId, logger) {
7
+ let retry = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
8
+ let response = {};
9
+ response = await superagent.get(`${THREADS_URL}/${creationId}`).set('Accept', 'application/json').set('Content-Type', 'application/json').query({
10
+ access_token: accessToken,
11
+ fields: 'id,status,error_message'
12
+ }).send();
13
+ if (response.body.status == 'IN_PROGRESS' && retry < 11) {
14
+ // small wait for first attempt, sometimes its just a text post that doesn't take long
15
+ loggerInfo(logger, `Creation ID is in progress ${creationId} retry ${retry} Waiting ${retry ? 60 : 10} seconds`);
16
+ await new Promise(resolve => setTimeout(resolve, retry ? 60000 : 10000));
17
+ return await confirmCreationId(accessToken, creationId, logger, retry + 1);
18
+ } else if (response.body.status == 'IN_PROGRESS' && retry == 11) {
19
+ let error = new Error(`Creation ID is in progress BUT TAKING TOO LONG ${creationId}`);
20
+ error.code = response.status;
21
+ throw error;
22
+ }
23
+ loggerDebug(logger, 'Threads Response status', response.status);
24
+ return response;
25
+ }
6
26
  async function requestApi(apiUrl, accessToken, inReplyToId, text, asset, logger) {
7
27
  let response = {};
8
28
  try {
@@ -32,6 +52,7 @@ async function requestApi(apiUrl, accessToken, inReplyToId, text, asset, logger)
32
52
  };
33
53
  }
34
54
  const containerResponse = await superagent.post(apiUrl).set('Accept', 'application/json').set('Content-Type', 'application/json').query(query).send();
55
+ await confirmCreationId(accessToken, containerResponse.body.id, logger);
35
56
  response = await superagent.post(THREADS_PUBLISH_URL).set('Accept', 'application/json').set('Content-Type', 'application/json').query({
36
57
  access_token: accessToken,
37
58
  creation_id: containerResponse.body.id
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltwater/conversations-api-services",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "Repository to contain all conversations api services shared across our services",
5
5
  "main": "dist/cjs/data-access/index.js",
6
6
  "module": "dist/esm/data-access/index.js",
@@ -7,6 +7,40 @@ const THREADS_URL = 'https://graph.threads.net/v1.0';
7
7
  const THREADS_PUBLISH_URL = `${THREADS_URL}/me/threads_publish`;
8
8
 
9
9
 
10
+ async function confirmCreationId(accessToken, creationId, logger, retry = 0) {
11
+ let response = {};
12
+
13
+ response = await superagent
14
+ .get(`${THREADS_URL}/${creationId}`)
15
+ .set('Accept', 'application/json')
16
+ .set('Content-Type', 'application/json')
17
+ .query({
18
+ access_token: accessToken,
19
+ fields: 'id,status,error_message',
20
+ })
21
+ .send();
22
+ if(response.body.status == 'IN_PROGRESS' && retry < 11){
23
+ // small wait for first attempt, sometimes its just a text post that doesn't take long
24
+ loggerInfo(logger,
25
+ `Creation ID is in progress ${creationId} retry ${retry} Waiting ${retry ? 60 : 10} seconds`
26
+ );
27
+ await new Promise((resolve) => setTimeout(resolve, retry ? 60000 : 10000));
28
+ return await confirmCreationId(accessToken, creationId, logger, retry + 1);
29
+ }else if(response.body.status == 'IN_PROGRESS' && retry == 11){
30
+ let error = new Error(
31
+ `Creation ID is in progress BUT TAKING TOO LONG ${creationId}`
32
+ );
33
+ error.code = response.status;
34
+ throw error
35
+ }
36
+
37
+
38
+ loggerDebug(logger,'Threads Response status', response.status);
39
+
40
+ return response;
41
+ }
42
+
43
+
10
44
  async function requestApi(
11
45
  apiUrl,
12
46
  accessToken,
@@ -51,7 +85,7 @@ async function requestApi(
51
85
  .set('Content-Type', 'application/json')
52
86
  .query(query)
53
87
  .send();
54
-
88
+ await confirmCreationId(accessToken, containerResponse.body.id, logger);
55
89
  response = await superagent
56
90
  .post(THREADS_PUBLISH_URL)
57
91
  .set('Accept', 'application/json')