poe-api-manager 1.0.0 → 1.2.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.
Files changed (69) hide show
  1. package/Changelog.md +5 -0
  2. package/README.md +16 -10
  3. package/index.js +2 -0
  4. package/lib/Utils.js +15 -0
  5. package/lib/WatchAPI.js +1 -33
  6. package/lib/modules/poe.ninja/currency/CurrencyBaseClass.js +37 -0
  7. package/lib/modules/poe.ninja/currency/CurrencyWievModule.js +2 -27
  8. package/lib/modules/poe.ninja/currency/currencySubmodules/subModules/CurrencyModule.js +8 -52
  9. package/lib/modules/poe.ninja/currency/currencySubmodules/subModules/FragmentModule.js +8 -52
  10. package/lib/modules/poe.ninja/currency/{currencySubmodules/functions → methods}/getData.js +2 -2
  11. package/lib/modules/poe.ninja/item/ItemBaseClass.js +64 -0
  12. package/lib/modules/poe.ninja/item/ItemWievModule.js +27 -52
  13. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/BaseTypeModule.js +8 -48
  14. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/BeastModule.js +8 -48
  15. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/BlightRavagedMapModule.js +9 -54
  16. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/BlightedMapModule.js +7 -49
  17. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/ClusterJewelModule.js +7 -52
  18. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/DeliriumOrbsModule.js +7 -52
  19. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/DivinationCardModule.js +7 -52
  20. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/EssenceModule.js +7 -52
  21. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/FossilModule.js +7 -52
  22. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/HelmetEnchantModule.js +7 -52
  23. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/IncubatorModule.js +7 -52
  24. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/InvitationModule.js +7 -52
  25. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/MapModule.js +7 -52
  26. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/MemoryModule.js +7 -52
  27. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/OilModule.js +7 -52
  28. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/OmenModule.js +7 -52
  29. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/ResonatorModule.js +7 -52
  30. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/ScarabModule.js +7 -52
  31. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/SkillGemModule.js +7 -52
  32. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueAccessoryModule.js +7 -52
  33. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueArmourModule.js +7 -52
  34. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueFlaskModule.js +7 -52
  35. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueJewelModule.js +7 -52
  36. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueMapModule.js +7 -52
  37. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueRelicModule.js +7 -52
  38. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/UniqueWeaponModule.js +7 -52
  39. package/lib/modules/poe.ninja/item/itemSubmodules/subModules/VialsModule.js +7 -52
  40. package/lib/modules/poe.ninja/item/{itemSubmodules/functions → methods}/getData.js +2 -2
  41. package/lib/modules/poe.watch/allModules/WatchBaseClass.js +45 -0
  42. package/lib/modules/poe.watch/allModules/fetch/fetch.js +1 -4
  43. package/lib/modules/poe.watch/allModules/submodules/AccessoryModule.js +19 -62
  44. package/lib/modules/poe.watch/allModules/submodules/ArmourModule.js +19 -60
  45. package/lib/modules/poe.watch/allModules/submodules/BaseModule.js +19 -59
  46. package/lib/modules/poe.watch/allModules/submodules/BeastModule.js +13 -42
  47. package/lib/modules/poe.watch/allModules/submodules/CurrencyModule.js +13 -43
  48. package/lib/modules/poe.watch/allModules/submodules/DeliriumOrbModule.js +20 -42
  49. package/lib/modules/poe.watch/allModules/submodules/DivsModule.js +14 -43
  50. package/lib/modules/poe.watch/allModules/submodules/EssenceModule.js +13 -42
  51. package/lib/modules/poe.watch/allModules/submodules/FlaskModule.js +13 -42
  52. package/lib/modules/poe.watch/allModules/submodules/FossilModule.js +13 -42
  53. package/lib/modules/poe.watch/allModules/submodules/FragmentModule.js +13 -42
  54. package/lib/modules/poe.watch/allModules/submodules/GemModule.js +19 -61
  55. package/lib/modules/poe.watch/allModules/submodules/InscribedModule.js +13 -44
  56. package/lib/modules/poe.watch/allModules/submodules/InvitationModule.js +13 -42
  57. package/lib/modules/poe.watch/allModules/submodules/JewelModule.js +13 -42
  58. package/lib/modules/poe.watch/allModules/submodules/MapModule.js +13 -42
  59. package/lib/modules/poe.watch/allModules/submodules/OilModule.js +13 -42
  60. package/lib/modules/poe.watch/allModules/submodules/ScarabModule.js +13 -42
  61. package/lib/modules/poe.watch/allModules/submodules/SextantModule.js +13 -42
  62. package/lib/modules/poe.watch/allModules/submodules/UniqueMapsModule.js +13 -42
  63. package/lib/modules/poe.watch/allModules/submodules/WeaponModule.js +19 -59
  64. package/lib/modules/poe.watch/allModules/watchUrlGenerator/urlGenerator.js +9 -0
  65. package/package.json +1 -1
  66. package/lib/config/poeNinja/url.js +0 -12
  67. package/lib/config/poeWatch/url.js +0 -12
  68. /package/lib/modules/poe.watch/allModules/{functions → methods}/getCategory.js +0 -0
  69. /package/lib/modules/poe.watch/allModules/{functions → methods}/getData.js +0 -0
package/Changelog.md CHANGED
@@ -1,4 +1,9 @@
1
1
  # Changelog
2
+ ## 1.2.1
3
+ - 🔄 [Update] Development was done with OOP. Classes have been changed.
4
+ >There was no change in the scripts.
5
+ - 🚀[Added] Added `filterProperties()` to utils class.
6
+
2
7
  ## 1.0.0
3
8
  - 🚀[New] utils class
4
9
  - 🚀[New] utils `getLeagues`function. Get league name.
package/README.md CHANGED
@@ -16,6 +16,7 @@
16
16
  - [itemView](#itemwiev)
17
17
  - [poe.watch](#watchapi)
18
18
  - [view](#view)
19
+ - [utils](#utils)
19
20
  - [Changelog](https://github.com/ayberkgezer/poe-api-manager/blob/main/Changelog.md)
20
21
  - [Examples](#examples)
21
22
 
@@ -52,14 +53,14 @@ What we can get here is as follows.
52
53
  - Currency
53
54
  - Fragment
54
55
 
55
- getData() => function returns data purely.
56
+ - getData() => function returns data purely.
56
57
  ```javascript
57
58
  //Example Currency
58
59
  ninjaAPI.currencyView.currency.getData().then((data) => {
59
60
  console.log(data);
60
61
  });
61
62
  ```
62
- getdata(requestedProperties) => The function filters the data as desired.
63
+ - getdata(requestedProperties) => The function filters the data as desired.
63
64
  >Note: Enter [poe.ninja Document](https://github.com/ayberkgezer/poe.ninja-API-Document?tab=readme-ov-file#poeninja-api) to access the values for the filter.
64
65
  ```javascript
65
66
  //Filtered data is returned
@@ -97,14 +98,14 @@ What we can get here is as follows.
97
98
  - Invitations
98
99
  - Memories
99
100
 
100
- getData() => function returns data purely.
101
+ - getData() => function returns data purely.
101
102
  ```javascript
102
103
  //Example BaseType
103
104
  ninjaAPI.itemView.baseType.getData().then((data) => {
104
105
  console.log(data);
105
106
  });
106
107
  ```
107
- getdata(requestedProperties) => The function filters the data as desired.
108
+ - getdata(requestedProperties) => The function filters the data as desired.
108
109
  >Note: Enter [poe.ninja Document](https://github.com/ayberkgezer/poe.ninja-API-Document?tab=readme-ov-file#poeninja-api) to access the values for the filter.
109
110
  ```javascript
110
111
  //Filtered data is returned
@@ -138,7 +139,7 @@ What we can get here is as follows.
138
139
  - Base
139
140
  - Beast
140
141
 
141
- getData() => function returns data purely.
142
+ - getData() => function returns data purely.
142
143
  ```javascript
143
144
  //Example Currency
144
145
  watchAPI.view.baseType.getData().then((data) => {
@@ -147,14 +148,14 @@ watchAPI.view.baseType.getData().then((data) => {
147
148
  ```
148
149
  > Enter [poe.watch Document](https://docs.poe.watch/#get-all-armours) to access the values for the filter.
149
150
 
150
- getdata(requestedProperties) => The function filters the data as desired.
151
+ - getdata(requestedProperties) => The function filters the data as desired.
151
152
  ```javascript
152
153
  //Filtered data is returned
153
154
  watchAPI.view.currency.getData(["id", "name", "icon"]).then((data) => {
154
155
  console.log(data);
155
156
  });
156
157
  ```
157
- getCategory("categoryName") => The function quickly filters through specific categories.
158
+ - getCategory("categoryName") => The function quickly filters through specific categories.
158
159
 
159
160
  > Note: Used in accessory, armour, base, gem and weapon.
160
161
 
@@ -170,16 +171,21 @@ Utils class is a class that contains some auxiliary tools.
170
171
  const { Utils } = require("poe-api-manager");
171
172
  const utils = new Utils();
172
173
  ```
173
- getLeagues() => Returns available league names.
174
+ - getLeagues() => Returns available league names.
174
175
 
175
176
  ```javascript
176
- const utils = new Utils();
177
-
178
177
  utils.getLeagues().then((data) => {
179
178
  console.log(data);
180
179
  });
181
180
  ```
182
181
 
182
+ - filterProperties(data, properties) => It is used to filter data.
183
+
184
+ ```javascript
185
+ utils.filterProperties(data, ["currencyTypeName", "chaosEquivalent"])
186
+ .then((result) => console.log(result));
187
+ ```
188
+
183
189
 
184
190
  ## Examples
185
191
  ```javascript
package/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  const NinjaAPI = require("./lib/NinjaAPI");
2
2
  const WatchAPI = require("./lib/WatchAPI");
3
3
  const Utils = require("./lib/Utils");
4
+ const RedisManager = require("./lib/RedisManager");
4
5
 
5
6
  module.exports = {
6
7
  NinjaAPI: NinjaAPI,
7
8
  WatchAPI: WatchAPI,
8
9
  Utils: Utils,
10
+ //RedisManager: RedisManager,
9
11
  };
package/lib/Utils.js CHANGED
@@ -1,4 +1,5 @@
1
1
  const getLeagues = require("./modules/utils/getLeagues");
2
+ const filterProperties = require("./modules/mainfunctions/filter/propertyFilter");
2
3
 
3
4
  /**
4
5
  * A utility class.
@@ -21,6 +22,20 @@ class Utils {
21
22
  throw new Error(`Error fetching data Leagues: ${error.message}`);
22
23
  }
23
24
  }
25
+ /**
26
+ * Filters properties of objects in an array based on the specified properties.
27
+ *
28
+ * @param {Array<Object>} data - The array of objects to filter.
29
+ * @param {Array<string>} properties - The array of property names to include in the result.
30
+ * @returns {Array<Object>} - An array of objects with only the specified properties.
31
+ */
32
+ async filterProperties(data, properties) {
33
+ try {
34
+ return filterProperties(data, properties);
35
+ } catch (error) {
36
+ throw new Error(`Error fetching data Leagues: ${error.message}`);
37
+ }
38
+ }
24
39
  }
25
40
 
26
41
  module.exports = Utils;
package/lib/WatchAPI.js CHANGED
@@ -6,50 +6,18 @@ const WatchWievModule = require("./modules/poe.watch/WatchWievModule");
6
6
  * @class
7
7
  */
8
8
  class WatchAPI {
9
- /**
10
- * The league for which the API is initialized.
11
- *
12
- * @private
13
- * @type {string}
14
- */
15
- #league;
16
-
17
- /**
18
- * The URL parameter for the league in the Path of Exile.
19
- *
20
- * @private
21
- * @type {string}
22
- */
23
- #leagueUrl;
24
-
25
9
  /**
26
10
  * Creates an instance of WatchAPI.
27
11
  *
28
12
  * @param {string} league - The league for which the API should be initialized.
29
13
  */
30
14
  constructor(league) {
31
- /**
32
- * The league for which the API is initialized.
33
- *
34
- * @private
35
- * @type {string}
36
- */
37
- this.#league = league;
38
-
39
- /**
40
- * The URL parameter for the league in the Path of Exile watch service.
41
- *
42
- * @private
43
- * @type {string}
44
- */
45
- this.#leagueUrl = `&league=${this.#league}`;
46
-
47
15
  /**
48
16
  * The WatchWievModule instance associated with this API.
49
17
  *
50
18
  * @type {WatchWievModule}
51
19
  */
52
- this.view = new WatchWievModule(this.#leagueUrl);
20
+ this.view = new WatchWievModule(league);
53
21
  }
54
22
  }
55
23
 
@@ -0,0 +1,37 @@
1
+ const getData = require("./methods/getData");
2
+
3
+ /**
4
+ * Represents a base class for interacting with data.
5
+ */
6
+ class CurrencyBaseClass {
7
+ #url;
8
+ #type;
9
+ #baseurl = "https://poe.ninja/api/data/";
10
+
11
+ /**
12
+ * Constructs a new CurrencyBaseClass instance.
13
+ * @param {string} league - The league name for which data is requested.
14
+ * @param {string} typeName - The type of data.
15
+ */
16
+ constructor(league, typeName) {
17
+ this.#url = `${this.#baseurl}currencyoverview?league=${league}`;
18
+ this.#type = `&type=${typeName}`;
19
+ }
20
+
21
+ /**
22
+ * Retrieves data based on the specified properties.
23
+ * @async
24
+ * @param {Array<string>} requestedProperties - The properties to include in the fetched data.
25
+ * @returns {Promise<Array<Object>>} The fetched data in JSON format.
26
+ * @throws {Error} If an error occurs during the data fetching process.
27
+ */
28
+ async getData(requestedProperties) {
29
+ try {
30
+ return await getData(this.#url, this.#type, requestedProperties);
31
+ } catch (error) {
32
+ throw new Error(`Error fetching CurrencyView data: ${error.message}`);
33
+ }
34
+ }
35
+ }
36
+
37
+ module.exports = CurrencyBaseClass;
@@ -1,5 +1,4 @@
1
1
  const currencySubmodules = require("./currencySubmodules/CurrencySubModules");
2
- const baseurl = require("../../../config/poeNinja/url");
3
2
 
4
3
  /**
5
4
  * Represents a module for fetching currency overview data.
@@ -7,8 +6,6 @@ const baseurl = require("../../../config/poeNinja/url");
7
6
  * @class
8
7
  */
9
8
  class CurrencyWievModule {
10
- #league;
11
- #baseurl;
12
9
  /**
13
10
  * Creates a new CurrencyWievModule instance.
14
11
  *
@@ -17,38 +14,16 @@ class CurrencyWievModule {
17
14
  */
18
15
  constructor(league) {
19
16
  /**
20
- * The league for which the currency overview data is fetched.
21
- *
22
- * @private
23
- * @type {string}
24
- */
25
- this.#league = league;
26
-
27
- /**
28
- * The base URL for fetching currency overview data.
29
- *
30
- * @private
31
- * @type {string}
32
- */
33
- this.#baseurl = baseurl.baseurl;
34
-
35
- /**
36
- * The URL for currency overview data specific to the league.
37
- *
38
- * @private
39
- * @type {string}
40
- */
41
- const url = `${this.#baseurl}currencyoverview?league=${this.#league}&type=`;
42
17
 
43
18
  /**
44
19
  * Represents a module for fetching currency data.
45
20
  */
46
- this.currency = new currencySubmodules.CurrencyModule(url);
21
+ this.currency = new currencySubmodules.CurrencyModule(league);
47
22
 
48
23
  /**
49
24
  * Represents a module for fetching fragment data.
50
25
  */
51
- this.fragment = new currencySubmodules.FragmentModule(url);
26
+ this.fragment = new currencySubmodules.FragmentModule(league);
52
27
  }
53
28
  }
54
29
 
@@ -1,60 +1,16 @@
1
- const getData = require("../functions/getData");
1
+ const CurrencyBaseClass = require("../../CurrencyBaseClass");
2
2
 
3
3
  /**
4
- * Represents a module for fetching data related to Currency.
5
- *
6
- * @class
4
+ * Represents a module for interacting with currency data.
5
+ * @extends CurrencyBaseClass
7
6
  */
8
- class CurrencyModule {
7
+ class CurrencyModule extends CurrencyBaseClass {
9
8
  /**
10
- * The URL for fetching data.
11
- *
12
- * @private
13
- * @type {string}
9
+ * Constructs a new CurrencyModule instance.
10
+ * @param {string} league - The league name for which currency data is requested.
14
11
  */
15
- #url;
16
-
17
- /**
18
- * The type of data (Currency in this case).
19
- *
20
- * @private
21
- * @type {string}
22
- */
23
- #type;
24
-
25
- /**
26
- * Creates an instance of CurrencyModule.
27
- *
28
- * @param {string} url - The URL to fetch data from.
29
- */
30
- constructor(url) {
31
- this.#url = url;
32
- this.#type = "Currency";
33
- }
34
-
35
- /**
36
- * Asynchronously retrieves data based on the specified properties.
37
- *
38
- * @async
39
- * @param {Array<string>} requestedProperties - An array of properties to retrieve.
40
- * @returns {Promise<Object>} A promise that resolves to the retrieved data.
41
- */
42
- async getData(requestedProperties) {
43
- try {
44
- /**
45
- * Calls the getData function to fetch Currency data.
46
- *
47
- * @type {Promise<Array<Object>>}
48
- */
49
- return getData(this.#url, this.#type, requestedProperties);
50
- } catch (error) {
51
- /**
52
- * Throws an error if there's an issue fetching or processing the Currency data.
53
- *
54
- * @throws {Error}
55
- */
56
- throw new Error(`Error fetching Currency data: ${error.message}`);
57
- }
12
+ constructor(league) {
13
+ super(league, "Currency");
58
14
  }
59
15
  }
60
16
 
@@ -1,60 +1,16 @@
1
- const getData = require("../functions/getData");
1
+ const CurrencyBaseClass = require("../../CurrencyBaseClass");
2
2
 
3
3
  /**
4
- * Represents a module for fetching data related to Fragments.
5
- *
6
- * @class
4
+ * Represents a module for interacting with fragment currency data.
5
+ * @extends CurrencyBaseClass
7
6
  */
8
- class FragmentModule {
7
+ class FragmentModule extends CurrencyBaseClass {
9
8
  /**
10
- * The URL for fetching data.
11
- *
12
- * @private
13
- * @type {string}
9
+ * Constructs a new FragmentModule instance.
10
+ * @param {string} league - The league name for which fragment currency data is requested.
14
11
  */
15
- #url;
16
-
17
- /**
18
- * The type of data (Fragment in this case).
19
- *
20
- * @private
21
- * @type {string}
22
- */
23
- #type;
24
-
25
- /**
26
- * Creates an instance of FragmentModule.
27
- *
28
- * @param {string} url - The URL to fetch data from.
29
- */
30
- constructor(url) {
31
- this.#url = url;
32
- this.#type = "Fragment";
33
- }
34
-
35
- /**
36
- * Asynchronously retrieves data based on the specified properties.
37
- *
38
- * @async
39
- * @param {Array<string>} requestedProperties - An array of properties to retrieve.
40
- * @returns {Promise<Object>} A promise that resolves to the retrieved data.
41
- */
42
- async getData(requestedProperties) {
43
- try {
44
- /**
45
- * Calls the getData function to fetch Fragment data.
46
- *
47
- * @type {Promise<Array<Object>>}
48
- */
49
- return getData(this.#url, this.#type, requestedProperties);
50
- } catch (error) {
51
- /**
52
- * Throws an error if there's an issue fetching or processing the Fragment data.
53
- *
54
- * @throws {Error}
55
- */
56
- throw new Error(`Error fetching Fragment data: ${error.message}`);
57
- }
12
+ constructor(league) {
13
+ super(league, "Fragment");
58
14
  }
59
15
  }
60
16
 
@@ -1,5 +1,5 @@
1
- const fetchData = require("../../currencyFetch/fetchCurrency");
2
- const filterProperties = require("../../../../mainfunctions/filter/propertyFilter");
1
+ const fetchData = require("../currencyFetch/fetchCurrency");
2
+ const filterProperties = require("../../../mainfunctions/filter/propertyFilter");
3
3
 
4
4
  /**
5
5
  * Retrieves data from a specified API endpoint, optionally filters the data based on requested properties, and returns the result.
@@ -0,0 +1,64 @@
1
+ const getData = require("./methods/getData");
2
+
3
+ class ItemBaseClass {
4
+ /**
5
+ * @type {string} The URL used for retrieving item data.
6
+ * @private
7
+ */
8
+ #url;
9
+
10
+ /**
11
+ * @type {string} The type of item to retrieve data for.
12
+ * @private
13
+ */
14
+ #type;
15
+
16
+ /**
17
+ * @type {string} The base URL for poe.watch.
18
+ * @private
19
+ */
20
+ #baseurl;
21
+ /**
22
+ * Constructs an instance of ItemBaseClass.
23
+ * @param {string} league - The name of the league to retrieve data for.
24
+ * @param {string} typeName - The type of item to retrieve data for.
25
+ */
26
+ constructor(league, typeName) {
27
+ /**
28
+ * The URL used for retrieving item data.
29
+ * @type {string}
30
+ * @private
31
+ */
32
+ this.#url = `${this.#baseurl}itemoverview?league=${league}`;
33
+
34
+ /**
35
+ * The type of item to retrieve data for.
36
+ * @type {string}
37
+ * @private
38
+ */
39
+ this.#type = `&type=${typeName}`;
40
+
41
+ /**
42
+ * The base URL for poe.watch.
43
+ * @type {string}
44
+ * @private
45
+ */
46
+ this.#baseurl = "https://poe.ninja/api/data/";
47
+ }
48
+
49
+ /**
50
+ * Retrieves item data based on requested properties.
51
+ * @param {string[]} requestedProperties - An array of properties to retrieve for each item.
52
+ * @returns {Promise<Array<Object>>} A promise that resolves with the requested item data.
53
+ * @throws {Error} If there is an error fetching the data.
54
+ */
55
+ async getData(requestedProperties) {
56
+ try {
57
+ return await getData(this.#url, this.#type, requestedProperties);
58
+ } catch (error) {
59
+ throw new Error(`Error fetching ItemOverView data: ${error.message}`);
60
+ }
61
+ }
62
+ }
63
+
64
+ module.exports = ItemBaseClass;