[GH-ISSUE #131] Plugin feature #129

Open
opened 2026-03-03 19:15:33 +03:00 by kerem · 7 comments
Owner

Originally created by @NghiaTranUIT on GitHub (Apr 28, 2019).
Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/131

Originally assigned to: @NghiaTranUIT on GitHub.

🐶 Brief

Inspired from Paw, it has a capability to extend the features if need by providing the plugins.

It means that those plugin-features is optional, and doesn't affect to the complexity of the app.

We should support the basic plugins-market, to help use download and install easily.

Built-in Plugins:

  • Export to different format (CSV, JSON)
  • Export request to different languages (Swift, obj, golang, ...)
  • Export the request to Insomnia.

👑 Criteria

  • Plugin functionality
  • Plugin list on Preference
  • Able to download and installed
  • Extendable (Like Sketch plugin), so the community can freely contribute
Originally created by @NghiaTranUIT on GitHub (Apr 28, 2019). Original GitHub issue: https://github.com/ProxymanApp/Proxyman/issues/131 Originally assigned to: @NghiaTranUIT on GitHub. ## 🐶 Brief Inspired from Paw, it has a capability to extend the features if need by providing the plugins. It means that those plugin-features is optional, and doesn't affect to the complexity of the app. We should support the basic plugins-market, to help use download and install easily. Built-in Plugins: - Export to different format (CSV, JSON) - Export request to different languages (Swift, obj, golang, ...) - Export the request to Insomnia. ## 👑 Criteria - [ ] Plugin functionality - [ ] Plugin list on Preference - [ ] Able to download and installed - [ ] Extendable (Like Sketch plugin), so the community can freely contribute
Author
Owner

@muizidn commented on GitHub (Nov 5, 2020):

any update on this?

<!-- gh-comment-id:722406399 --> @muizidn commented on GitHub (Nov 5, 2020): any update on this?
Author
Owner

@NghiaTranUIT commented on GitHub (Nov 6, 2020):

Hey, we decided to put this ticket in Backlog since we have more important features for 80% of total user-cases.

We release the first version of the Plugin feature, it's called "Scripting" (https://docs.proxyman.io/scripting/script)

<!-- gh-comment-id:722760511 --> @NghiaTranUIT commented on GitHub (Nov 6, 2020): Hey, we decided to put this ticket in Backlog since we have more important features for 80% of total user-cases. We release the first version of the Plugin feature, it's called "Scripting" (https://docs.proxyman.io/scripting/script) - It means we can write JS code to manipulate the request/response data - Use [Addon](https://docs.proxyman.io/scripting/addons) and [built-in libraries](https://docs.proxyman.io/scripting/built-in-js-libraries) or you can write it [by yourself](https://docs.proxyman.io/scripting/write-your-own-addons) - As well as with a bunch of useful [Snippets Code](https://docs.proxyman.io/scripting/snippet-code)
Author
Owner

@NghiaTranUIT commented on GitHub (Nov 6, 2020):

Just wondering @muizidn, let imagine that the Plugin feature is released. What is the Plugin are you looking for at first glance? 🤔

I will collect the request and have a plan to implement it soon 😄

<!-- gh-comment-id:722774306 --> @NghiaTranUIT commented on GitHub (Nov 6, 2020): Just wondering @muizidn, let imagine that the Plugin feature is released. What is the Plugin are you looking for at first glance? 🤔 I will collect the request and have a plan to implement it soon 😄
Author
Owner

@muizidn commented on GitHub (Nov 6, 2020):

😅. I would like to convert all my pinned endpoints into Moya target or Retrofit api. Scripting looks cool!

<!-- gh-comment-id:723055575 --> @muizidn commented on GitHub (Nov 6, 2020): 😅. I would like to convert all my pinned endpoints into Moya target or Retrofit api. Scripting looks cool!
Author
Owner

@NghiaTranUIT commented on GitHub (Nov 6, 2020):

@muizidn Look like Code Generate is possible with httpsnippet (https://github.com/Kong/httpsnippet). It's easier to integrate to Proxyman without implementing the Plugin, which is a huge feature 😄

Let me consider and support httpsnippet code

<!-- gh-comment-id:723093505 --> @NghiaTranUIT commented on GitHub (Nov 6, 2020): @muizidn Look like Code Generate is possible with httpsnippet (https://github.com/Kong/httpsnippet). It's easier to integrate to Proxyman without implementing the Plugin, which is a huge feature 😄 Let me consider and support httpsnippet code
Author
Owner

@monavari-lebrecht commented on GitHub (Jan 12, 2023):

I am looking forward for the plugin section as well :)

In OData we have batch requests, that collect multiple requests in one $batch and the response looks like this:

HTTP/1.1 200 OK
X-Powered-By: Express
access-control-allow-origin: http://localhost.proxyman.io:4004
x-correlation-id: a03555f2-4869-48c8-8931-7895fbdf2c02
OData-Version: 4.0
content-type: multipart/mixed; boundary=batch_id-1673453844670-135
Date: Wed, 11 Jan 2023 16:17:24 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked

--batch_id-1673453844670-135
content-type: application/http
content-transfer-encoding: binary

HTTP/1.1 200 OK
odata-version: 4.0
content-type: application/json;odata.metadata=minimal;IEEE754Compatible=true

{"@odata.context":"$metadata#HistoricBasketPositions(qaBlob,ID)/$entity","qaBlob":"[{\"q\":\"Art der Bestellung\",\"t\":\"select\",\"a\":\"FREETEXT\"},{\"q\":\"Kontierungstyp\",\"t\":\"select\",\"a\":\"K\"},{\"q\":\"Geschenk\",\"t\":\"radio\",\"a\":\"Nein\"},{\"q\":\"Veranstaltung\",\"t\":\"radio\",\"a\":\"Nein\"},{\"q\":\"Warengruppe\",\"t\":\"select\",\"a\":\"19010103\"},{\"q\":\"Kostenstelle\",\"t\":\"valuehelpinput\",\"a\":\"H0010918\"},{\"q\":\"Preis\",\"t\":\"textfield\",\"a\":\"25\"}]","ID":"9dea149d-5f71-4b0d-867a-e369687c2ba0","QAs":[{"q":"Art der Bestellung","a":"FREETEXT"},{"q":"Kontierungstyp","a":"K"},{"q":"Geschenk","a":"Nein"},{"q":"Veranstaltung","a":"Nein"},{"q":"Warengruppe","a":"19010103"},{"q":"Kostenstelle","a":"H0010918"},{"q":"Preis","a":"25"}]}
--batch_id-1673453844670-135
content-type: application/http
content-transfer-encoding: binary

HTTP/1.1 200 OK
odata-version: 4.0
content-type: application/json;odata.metadata=minimal;IEEE754Compatible=true

{"@odata.context":"../$metadata#HistoricBasketPositions_QAs(up__ID)","value":[]}
--batch_id-1673453844670-135--

So in the body is (wrapped in something like this --batch_id-1673453844670-135) for each intern request the header code and then some json.

Important for us is most of the time the json part, so we would love to see it well formatted.

For better understanding. This is the POST payload of the request:

--batch_id-1673453844670-135
Content-Type:application/http
Content-Transfer-Encoding:binary

GET HistoricBasketPositions(9dea149d-5f71-4b0d-867a-e369687c2ba0)?$select=qaBlob HTTP/1.1
Accept:application/json;odata.metadata=minimal;IEEE754Compatible=true
Accept-Language:de-DE
Content-Type:application/json;charset=UTF-8;IEEE754Compatible=true


--batch_id-1673453844670-135
Content-Type:application/http
Content-Transfer-Encoding:binary

GET HistoricBasketPositions(9dea149d-5f71-4b0d-867a-e369687c2ba0)/QAs?$select=up__ID&$skip=0&$top=100 HTTP/1.1
Accept:application/json;odata.metadata=minimal;IEEE754Compatible=true
Accept-Language:de-DE
Content-Type:application/json;charset=UTF-8;IEEE754Compatible=true


--batch_id-1673453844670-135--
Group ID: $auto.Heroes
<!-- gh-comment-id:1380288987 --> @monavari-lebrecht commented on GitHub (Jan 12, 2023): I am looking forward for the plugin section as well :) In OData we have batch requests, that collect multiple requests in one $batch and the response looks like this: ``` HTTP/1.1 200 OK X-Powered-By: Express access-control-allow-origin: http://localhost.proxyman.io:4004 x-correlation-id: a03555f2-4869-48c8-8931-7895fbdf2c02 OData-Version: 4.0 content-type: multipart/mixed; boundary=batch_id-1673453844670-135 Date: Wed, 11 Jan 2023 16:17:24 GMT Connection: keep-alive Keep-Alive: timeout=5 Transfer-Encoding: chunked --batch_id-1673453844670-135 content-type: application/http content-transfer-encoding: binary HTTP/1.1 200 OK odata-version: 4.0 content-type: application/json;odata.metadata=minimal;IEEE754Compatible=true {"@odata.context":"$metadata#HistoricBasketPositions(qaBlob,ID)/$entity","qaBlob":"[{\"q\":\"Art der Bestellung\",\"t\":\"select\",\"a\":\"FREETEXT\"},{\"q\":\"Kontierungstyp\",\"t\":\"select\",\"a\":\"K\"},{\"q\":\"Geschenk\",\"t\":\"radio\",\"a\":\"Nein\"},{\"q\":\"Veranstaltung\",\"t\":\"radio\",\"a\":\"Nein\"},{\"q\":\"Warengruppe\",\"t\":\"select\",\"a\":\"19010103\"},{\"q\":\"Kostenstelle\",\"t\":\"valuehelpinput\",\"a\":\"H0010918\"},{\"q\":\"Preis\",\"t\":\"textfield\",\"a\":\"25\"}]","ID":"9dea149d-5f71-4b0d-867a-e369687c2ba0","QAs":[{"q":"Art der Bestellung","a":"FREETEXT"},{"q":"Kontierungstyp","a":"K"},{"q":"Geschenk","a":"Nein"},{"q":"Veranstaltung","a":"Nein"},{"q":"Warengruppe","a":"19010103"},{"q":"Kostenstelle","a":"H0010918"},{"q":"Preis","a":"25"}]} --batch_id-1673453844670-135 content-type: application/http content-transfer-encoding: binary HTTP/1.1 200 OK odata-version: 4.0 content-type: application/json;odata.metadata=minimal;IEEE754Compatible=true {"@odata.context":"../$metadata#HistoricBasketPositions_QAs(up__ID)","value":[]} --batch_id-1673453844670-135-- ``` So in the body is (wrapped in something like this --batch_id-1673453844670-135) for each intern request the header code and then some json. *Important for us is most of the time the json part, so we would love to see it well formatted.* For better understanding. This is the POST payload of the request: ``` --batch_id-1673453844670-135 Content-Type:application/http Content-Transfer-Encoding:binary GET HistoricBasketPositions(9dea149d-5f71-4b0d-867a-e369687c2ba0)?$select=qaBlob HTTP/1.1 Accept:application/json;odata.metadata=minimal;IEEE754Compatible=true Accept-Language:de-DE Content-Type:application/json;charset=UTF-8;IEEE754Compatible=true --batch_id-1673453844670-135 Content-Type:application/http Content-Transfer-Encoding:binary GET HistoricBasketPositions(9dea149d-5f71-4b0d-867a-e369687c2ba0)/QAs?$select=up__ID&$skip=0&$top=100 HTTP/1.1 Accept:application/json;odata.metadata=minimal;IEEE754Compatible=true Accept-Language:de-DE Content-Type:application/json;charset=UTF-8;IEEE754Compatible=true --batch_id-1673453844670-135-- Group ID: $auto.Heroes ```
Author
Owner

@NghiaTranUIT commented on GitHub (Jan 13, 2023):

Thanks for the sample @monavari-lebrecht.

If I understand correctly, you would like to use the Plugin to show a batch request as multiple separated requests on the app?

Currently, Proxyman shows Multiple Parts and you can prettify the JSON string as well. Here is the video: https://www.dropbox.com/s/mew5kndo6kdxvrg/CleanShot%202023-01-13%20at%2011.12.19.mp4?dl=0

<!-- gh-comment-id:1381563861 --> @NghiaTranUIT commented on GitHub (Jan 13, 2023): Thanks for the sample @monavari-lebrecht. If I understand correctly, you would like to use the Plugin to show a batch request as multiple separated requests on the app? Currently, Proxyman shows Multiple Parts and you can prettify the JSON string as well. Here is the video: https://www.dropbox.com/s/mew5kndo6kdxvrg/CleanShot%202023-01-13%20at%2011.12.19.mp4?dl=0
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/Proxyman#129
No description provided.