wrappedConnection.ts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. import { Connection } from "@solana/web3.js";
  2. import axios from "axios";
  3. import { METAPLEX_READAPI } from "./anchor";
  4. export class WrappedConnection extends Connection {
  5. async getAsset(assetId: any): Promise<any> {
  6. try {
  7. const response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  8. jsonrpc: "2.0",
  9. method: "getAsset",
  10. id: "compression-example",
  11. params: [assetId],
  12. });
  13. return response.data.result;
  14. } catch (error) {
  15. console.error(error);
  16. }
  17. }
  18. async getAssetProof(assetId: any): Promise<any> {
  19. try {
  20. const response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  21. jsonrpc: "2.0",
  22. method: "getAssetProof",
  23. id: "compression-example",
  24. params: [assetId],
  25. });
  26. return response.data.result;
  27. } catch (error) {
  28. console.error(error);
  29. }
  30. }
  31. async getAssetsByOwner(
  32. assetId: string,
  33. sortBy: any,
  34. limit: number,
  35. page: number,
  36. before: string,
  37. after: string
  38. ): Promise<any> {
  39. try {
  40. const response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  41. jsonrpc: "2.0",
  42. method: "getAssetsByOwner",
  43. id: "rpd-op-123",
  44. params: [assetId, sortBy, limit, page, before, after],
  45. });
  46. //console.log("getAssetsByOwner: " + JSON.stringify(response.data));
  47. return response.data.result;
  48. } catch (error) {
  49. console.error(error);
  50. }
  51. }
  52. async getAssetsByCreator(
  53. assetId: string,
  54. sortBy: any,
  55. limit: number,
  56. page: number,
  57. before: string,
  58. after: string
  59. ): Promise<any> {
  60. try {
  61. const response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  62. jsonrpc: "2.0",
  63. method: "getAssetsByCreator",
  64. id: "compression-example",
  65. params: [assetId, true, sortBy, limit, page, null, null],
  66. });
  67. return response.data.result;
  68. } catch (error) {
  69. console.error(error);
  70. }
  71. }
  72. async getAssetsByAuthority(
  73. assetId: string,
  74. sortBy: any,
  75. limit: number,
  76. page: number,
  77. before: string,
  78. after: string
  79. ): Promise<any> {
  80. try {
  81. const response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  82. jsonrpc: "2.0",
  83. method: "getAssetsByAuthority",
  84. id: "compression-example",
  85. params: [assetId, sortBy, limit, page, before, after],
  86. });
  87. return response.data.result;
  88. } catch (error) {
  89. console.error(error);
  90. }
  91. }
  92. async getAssetsByGroup(
  93. groupKey: string,
  94. groupValue: string,
  95. sortBy: any,
  96. limit: number,
  97. page: number,
  98. before: string,
  99. after: string
  100. ): Promise<any> {
  101. try {
  102. let events = [];
  103. const response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  104. jsonrpc: "2.0",
  105. method: "getAssetsByGroup",
  106. id: "rpd-op-123",
  107. params: [groupKey, groupValue, sortBy, limit, page, before, after],
  108. });
  109. events.push(...response.data.result.items);
  110. return events;
  111. } catch (error) {
  112. console.error(error);
  113. }
  114. }
  115. // This will loop through all pages and return all assets
  116. async getAllAssetsByGroup(
  117. groupKey: string,
  118. groupValue: string,
  119. sortBy: any,
  120. limit: number,
  121. page: number,
  122. before: string,
  123. after: string
  124. ): Promise<any> {
  125. try {
  126. let events = [];
  127. let response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  128. jsonrpc: "2.0",
  129. method: "getAssetsByGroup",
  130. id: "rpd-op-123",
  131. params: [groupKey, groupValue, sortBy, limit, page, before, after],
  132. });
  133. events.push(...response.data.result.items);
  134. while (true) {
  135. console.log("Requested page" + page);
  136. page += 1;
  137. response = await axios.post(process.env.NEXT_PUBLIC_RPC ? process.env.NEXT_PUBLIC_RPC : METAPLEX_READAPI, {
  138. jsonrpc: "2.0",
  139. method: "getAssetsByGroup",
  140. id: "rpd-op-123",
  141. params: [groupKey, groupValue, sortBy, limit, page, before, after],
  142. });
  143. events.push(...response.data.result.items);
  144. if (events.length % 1000 != 0 || response.data.result.items.length == 0) {
  145. break;
  146. }
  147. }
  148. return events;
  149. } catch (error) {
  150. console.error(error);
  151. }
  152. }
  153. }