Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable env variable placeholder replacement when including file in request #28

Closed
daedal-knickerbockers opened this issue May 18, 2021 · 10 comments
Labels
enhancement New feature or request

Comments

@daedal-knickerbockers
Copy link

It would be great if env variable placeholders would also be replaced in included files.

// My Env File
{
  "dev": {
    "foo": "bar"
  }
}
// My payload "payload.json" as a separate file
{
  "foo": "{{foo}}"
}
POST my.host.com
Content-Type: application/json

< ./payload.json

Currently, when sending the request, it would send the exact payload and not replace the {{foo}} placeholder.

@AnWeber
Copy link
Owner

AnWeber commented May 18, 2021

yeah, that is a cool feature, I already implemented it:-)

POST {{host}}/auth
Authorization: Basic {{authorization}}

<@ ./body.json

https://github.com/AnWeber/httpyac/blob/main/examples/README.md#request-body

@daedal-knickerbockers
Copy link
Author

Cool, thanks, I guess I didn't read the docs well enough :-)

Unfortunately, this now breaks our cross-IDE workflow - some of our team are working in Webstorm, some are working in Visual Studio Code. Webstorm will replace placeholders in files when just using < ./body.json, but will literally send <@ ./body.json as the body when using this format.

Any chance that I can maybe add a custom script to the request that will, e.g. add the missing @ to the http request only when it is made via httpyac?

@AnWeber
Copy link
Owner

AnWeber commented May 18, 2021

Possibly as background why it is implemented as a separate import. To replace the variables, the whole file must be loaded as text. But for this I have to know the encoding of the file (default UTF-8). Additionally I can save resources, because I only stream the file and don't load it completely into memory.
If it does not work, please let me know. It is a function that I do not use so myself.

@AnWeber
Copy link
Owner

AnWeber commented May 18, 2021

I'll take a look at it and get back to you. My first idea would be a meta data # @forceReplace

@daedal-knickerbockers
Copy link
Author

Thanks a lot! The meta data approach sounds great, this will keep compatibility with both IDEs and one must explicitly opt-in to use more resources :-)

@AnWeber
Copy link
Owner

AnWeber commented May 18, 2021

It is now possible to force variable replacement using Meta Data.

# @injectVariables

@testVariable=foo

POST https://httpbin.org/anything
accept: application/json

< ./variables.json

I also have it built in, using .httpyac.json, to always force the replacement. This will then also be possible in the vscode extension in the settings

AnWeber added a commit that referenced this issue May 18, 2021
@AnWeber AnWeber added the enhancement New feature or request label May 18, 2021
AnWeber added a commit to AnWeber/vscode-httpyac that referenced this issue May 18, 2021
@AnWeber
Copy link
Owner

AnWeber commented May 19, 2021

I noticed something else today, because I still had the setting from my test activated. How does Intellij behave when a PDF is imported? In this case, the replacement of the variables is incorrect and also changes the request body.

@daedal-knickerbockers
Copy link
Author

Do you have an example PDF for this?

I tried it out with these two files:
Foo.md
Converted to PDF:
Foo.pdf

I then sent this request:

// Environment
{
  "Foo": {
    "foo": "bar"
  }
}
POST https://httpbin.org/anything
accept: application/json

< ./Foo.pdf

This was the response:

{
  "args": {},
  "data": "data:application/octet-stream;base64,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ZAoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL1JvYm90by1SZWd1bGFyCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxOCAwIFJdCi9Ub1VuaWNvZGUgMTkgMCBSPj4KZW5kb2JqCjIgMCBvYmoKPDwKL1R5cGUgL1BhZ2VzCi9LaWRzIApbCjUgMCBSCl0KL0NvdW50IDEKL1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDXQo+PgplbmRvYmoKeHJlZgowIDIxCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAzNzYwIDAwMDAwIG4gCjAwMDAwMDAxODcgMDAwMDAgbiAKMDAwMDAwMDI4MiAwMDAwMCBuIAowMDAwMDAwNjU1IDAwMDAwIG4gCjAwMDAwMDM2MjAgMDAwMDAgbiAKMDAwMDAwMDMxOSAwMDAwMCBuIAowMDAwMDAwMzYyIDAwMDAwIG4gCjAwMDAwMDA0OTEgMDAwMDAgbiAKMDAwMDAwMDQwMyAwMDAwMCBuIAowMDAwMDAwNTUzIDAwMDAwIG4gCjAwMDAwMDA5NjIgMDAwMDAgbiAKMDAwMDAwMTM5NSAwMDAwMCBuIAowMDAwMDAwNzc2IDAwMDAwIG4gCjAwMDAwMDA5NDIgMDAwMDAgbiAKMDAwMDAwMTQxNSAwMDAwMCBuIAowMDAwMDAxNjc5IDAwMDAwIG4gCjAwMDAwMDI5MzEgMDAwMDAgbiAKMDAwMDAwMzE2OSAwMDAwMCBuIAowMDAwMDAyOTEwIDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgMjEKL0luZm8gMSAwIFIKL1Jvb3QgMTEgMCBSCj4+CnN0YXJ0eHJlZgozODU4CiUlRU9GCg==",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Accept-Encoding": "gzip,deflate",
    "Content-Length": "4357",
    "Content-Type": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "Apache-HttpClient/4.5.13 (Java/11.0.10)",
    "X-Amzn-Trace-Id": "Root=1-60a4bb3a-235c5e0f75c06a8b10275ff9"
  },
  "json": null,
  "method": "POST",
  "origin": "...",
  "url": "https://httpbin.org/anything"
}

I built the response PDF file out of the response data and recieved this:
Response.pdf

Its the exact same PDF file and no replacement has happened.

Is this what you had in mind as a test? If not, I can test another case :-)

@AnWeber
Copy link
Owner

AnWeber commented May 20, 2021

Thank you. That helped me. The PDF is transferred as application/octet-stream, but in my tool as text. So Intellij has here a special treatment for PDF.

{
  "args": {},
  "data": "%PDF-1.4\n1 0 obj\n<<\n/Title (��\u0000M\u0000a\u0000r\u0000k\u0000d\u0000o\u0000w\u0000n\u0000 \u0000T\u0000o\u0000 \u0000P\u0000D\u0000F)\n/Creator (��\u0000w\u0000k\u0000h\u0000t\u0000m\u0000l\u0000t\u0000o\u0000p\u0000d\u0000f\u0000 \u00000\u0000.\u00001\u00002\u0000.\u00005)\n/Producer (��\u0000Q\u0000t\u0000 \u00004\u0000.\u00008\u0000.\u00007)\n/CreationDate (D:20210519071343Z)\n>>\nendobj\n3 0 obj\n<<\n/Type /ExtGState\n/SA true\n/SM 0.02\n/ca 1.0\n/CA 1.0\n/AIS false\n/SMask /None>>\nendobj\n4 0 obj\n[/Pattern /DeviceRGB]\nendobj\n7 0 obj\n[0 /XYZ 33  \n813.500000  0]\nendobj\n8 0 obj\n<<\n/__WKANCHOR_2 7 0 R\n>>\nendobj\n10 0 obj\n<</Title (��\u0000F\u0000o\u0000o)\n  /Parent 9 0 R\n  /Dest /__WKANCHOR_2\n  /Count 0\n>>\nendobj\n9 0 obj\n<</Type /Outlines /First 10 0 R\n/Last 10 0 R>>\nendobj\n11 0 obj\n<<\n/Type /Catalog\n/Pages 2 0 R\n/Outlines 9 0 R\n/PageMode /UseOutlines\n/Dests 8 0 R\n>>\nendobj\n5 0 obj\n<<\n/Type /Page\n/Parent 2 0 R\n/Contents 12 0 R\n/Resources 14 0 R\n/Annots 15 0 R\n/MediaBox [0 0 595 842]\n>>\nendobj\n14 0 obj\n<<\n/ColorSpace <<\n/PCSp 4 0 R\n/CSp /DeviceRGB\n/CSpg /DeviceGray\n>>\n/ExtGState <<\n/GSa 3 0 R\n>>\n/Pattern <<\n>>\n/Font <<\n/F6 6 0 R\n>>\n/XObject <<\n>>\n>>\nendobj\n15 0 obj\n[ ]\nendobj\n12 0 obj\n<<\n/Length 13 0 R\n/Filter /FlateDecode\n>>\nstream\nx��S�J�@\u0010}߯�g����\u0006B��*\b\n!\u000b>�\u000f!m�Җ�V���K�mJ��Y���3�9s&In�\u001a�w�\u0014�\u0006�v/*D��$^�����\u0019��`(omhVh\u000b[T��=��箐�\u001a�\u0018*��<t)\u0011\n���Ɲ���_��\u0005��\u000b;�\u0004�T+��4�fR�����\\G\u000fv�\u001a%�5�I�!�1�8\r��}�܀�`�c\u0000�34���K�fE�QL\u000bI\u0006�CV��WŽ\u0013�\u001d\u0018ܺ{\u0001�O���H��\u0015\u001d[�\\+7?�s�-��f�\u0004#��N!���.\u0010�X(�\u0007�C\"�:$\u001d@z�M�M��,��ٿ�K;��C�C����@\u001as��\u0017�?�'w\u0005�X7�/��:�>��.�Ib+\u001fe\u0003�i�q။���0\"Z�J\u0015\u0004�w��\u0011\\����:\u0011\t\u001au�ꏊ�P�O���\nendstream\nendobj\n13 0 obj\n357\nendobj\n16 0 obj\n<< /Type /FontDescriptor\n/FontName /QQAAAA+Roboto-Regular\n/Flags 4 \n/FontBBox [-736.816406 -270.996093 1148.43750 1056.15234 ]\n/ItalicAngle 0 \n/Ascent 927.734375 \n/Descent -244.140625 \n/CapHeight 927.734375 \n/StemV 48.8281250 \n/FontFile2 17 0 R\n>>\nendobj\n17 0 obj\n<<\n/Length1 1580 \n/Length 20 0 R\n/Filter /FlateDecode\n>>\nstream\nx�uS}L\u001be\u0018�����!\b+�T�ƖjKLh���\u0012�\\�!�\u0010XJ�\f�F�\u001e-ɵ�]�\u0001ɦ�\u001au���\u0018\u0017P��\u001cq�,0��\\�\u001f�\u00190s_�\u0010�R�\u001f3Nc2v�ϕ\u000bQ�׼��~�����}\u000f\b\u0000��}�\u0000t���#��\u001d��\u0001\u001c\u0003)it���\u0011�\u0004@ٴ\u0018O&�:�\u0011���p\u001a\u0003�Ǹ�\u0000L=�\u0007ҙ�H͇�O����D�,\u0011�b��+3�\u001cT�\u0007y\u0001�#\u001bψ�}����\u0015�<\u0002\f{�\u001c\u0002\u0013�i�\u0014\u0000 ����E\u0018��A\u001f+�\"��M���Ut����\u000e\u0011�e�\u0003\r`�<I1A��9��4[ZǠrR���\u00013�C\u0015T\u00038�\u0016'c!��:q&N�^m����_H��6��~����i˘��j����ɬ�U��KK\u0016:B�o^�\u0003��{:���\u0004��a�2$N����\u0015�T���y^m�\t����4;�UbC��?�A�\u000bl� �5(��p����l5f��y�<�^+�\tzܞ:3׿a�Ny��K/6?,+�߼���X����(�m~y�,F=S��nk��T�<��G���ĭ��2Y\"g�8%gH&�{�h��\u0014�\u001e�A��\"!�+�\u000b!,/�9��3��m�v:r���\\�LȖ'�u_$�ӄ9�\u001d�\u0017�O��\u0018����;s��F�8�]oߵ��Ϗ�r3�O�\r�\u0000\u0001�+\u0014\b�M���n\u0017z��\u00026��83�u�;�\rw4\u0006��<)\u0016��1���m��}�,\u0018�+c�\u001eG%+zTV<��֐[p\u000b!�A-�V\u0013�խ\u001c�u~\r9s��\u000b�-��ʕ�'O.EH��b,��\u0002�{c��)\u001f\\�>~c�lN�뽗��b���U�����\u0007+�A�L�[��\u001e��U\u0000��\u0001.g�`I��\u000f�\u001c�$+�\t�\u0010���\u0010��\u0019g+�xx\f��9���\u0015-Tv�7�`�~���q\u001f\f\u0018X�3e`�7���\u0019�/\u0018�E�h`\u0013XI��9�$-\u0006����4�\",�Q�VR�1���)�:n`\u0006�g\r�\"�d`\u0013�P40\u0007�\u0012��+!F6A+Ȑ�QP`\bR��\u0002~�<4�\u001f�\u000ehǬ�q\tDd\u001d��\u0004x\u0011�`D�9��+_b\"�\"j��w\u0012WB��\u001bU�R邃o��\u001d����DGG6�u�H�#��򎨘\u0017��b\u00127D��\u000e\u001c\u0005\u001c\u0010�w�\u0005}F�\u0014��q\u0014����%ŕ�]�\u001f��%[y�+c\u0013z�^l0\u0000\u0002�[mX�e��\u001f��\u000e��\u000f\b�t��?\u0005\u001bn�R*аjI?�\u0002�h\u0013�\b\u001f\f�~^\\�Ñ���Lƍ)�Jh'��l���\u0018��3n�6�\u001e|7�l6�h��k�������\\<�\u0016����IC\t1�\u0017�Ύֶ���\u0006ދk�\u0002>�P�\nendstream\nendobj\n20 0 obj\n1140\nendobj\n18 0 obj\n<< /Type /Font\n/Subtype /CIDFontType2\n/BaseFont /Roboto-Regular\n/CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >>\n/FontDescriptor 16 0 R\n/CIDToGIDMap /Identity\n/W [0 [440 548 566 336 344 336 ]\n]\n>>\nendobj\n19 0 obj\n<< /Length 399 >>\nstream\n/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n1 begincodespacerange\n<0000> <FFFF>\nendcodespacerange\n2 beginbfrange\n<0000> <0000> <0000>\n<0001> <0005> [<0046> <006F> <007B> <0066> <007D> ]\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend\n\nendstream\nendobj\n6 0 obj\n<< /Type /Font\n/Subtype /Type0\n/BaseFont /Roboto-Regular\n/Encoding /Identity-H\n/DescendantFonts [18 0 R]\n/ToUnicode 19 0 R>>\nendobj\n2 0 obj\n<<\n/Type /Pages\n/Kids \n[\n5 0 R\n]\n/Count 1\n/ProcSet [/PDF /Text /ImageB /ImageC]\n>>\nendobj\nxref\n0 21\n0000000000 65535 f \n0000000009 00000 n \n0000003760 00000 n \n0000000187 00000 n \n0000000282 00000 n \n0000000655 00000 n \n0000003620 00000 n \n0000000319 00000 n \n0000000362 00000 n \n0000000491 00000 n \n0000000403 00000 n \n0000000553 00000 n \n0000000962 00000 n \n0000001395 00000 n \n0000000776 00000 n \n0000000942 00000 n \n0000001415 00000 n \n0000001679 00000 n \n0000002931 00000 n \n0000003169 00000 n \n0000002910 00000 n \ntrailer\n<<\n/Size 21\n/Info 1 0 R\n/Root 11 0 R\n>>\nstartxref\n3858\n%%EOF\n",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Accept-Encoding": "gzip, deflate, br",
    "Content-Length": "5577",
    "Host": "httpbin.org",
    "User-Agent": "httpyac",
    "X-Amzn-Trace-Id": "Root=1-60a6a2ce-190829597b44e6214a1ba4af"
  },
  "json": null,
  "method": "POST",
  "origin": "79.243.62.160",
  "url": "https://httpbin.org/anything"
}

I think I need to improve my code:-)

@AnWeber
Copy link
Owner

AnWeber commented May 24, 2021

I updated environmentConfig to allow configuration of a white list of extensions which automatically inject variables. I think this simplifies your use case

@AnWeber AnWeber closed this as completed May 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants