【问题标题】:Elixir - Dynamically setting request headers for stripity_stripe libraryElixir - 动态设置 stripity_stripe 库的请求标头
【发布时间】:2021-02-19 08:07:16
【问题描述】:

我正在使用 stripity_stripe 库并希望通过代理服务器发送一些请求以进行条带化,但不发送其他请求。所以,我试图在某些请求上动态发送 hackney 选项。我查看了 stripity_stripe 库的代码和文档,但找不到任何示例来发送与代理相关的 hackney 选项。我想办法在 config.ex 文件中设置代理相关信息,它工作正常,但由于它是在配置中设置的,它将应用于所有请求。

config :stripity_stripe,
  api_key: System.get_env("STRIPE_API_KEY"),
  hackney_opts: [
    {:ssl_options, [cacertfile: "CERT.pem"]},
    {:proxy, System.get_env("PROXY_SANDBOX_BASE_URL")},
    {:proxy_auth,
     {System.get_env("PROXY_SANDBOX_USERNAME"), System.get_env("PROXY_SANDBOX_PASSWORD")}}
  ]

我在 stripity_stripe 中找到了一个函数 request() 来动态发送标头和选项,但无法成功发送这些选项。以下是我的尝试:

Stripe.API.request(params, :post, "tokens", %{},
      hackney_opts: [
        {:ssl_options, [cacertfile: "/Users/apple/.ssh/CERT.pem"]},
        {:proxy, System.get_env("PROXY_SANDBOX_BASE_URL")},
        {:proxy_auth,
         {System.get_env("PROXY_SANDBOX_USERNAME"), System.get_env("PROXY_SANDBOX_PASSWORD")}}
      ]
    )

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 我在 hackney 文档中迷路了,所以希望比我更聪明的人可以参与进来,但请简要查看代码,尝试在调用 Stripe.API.request/5 时省略 hackney_options 键,然后输入选项列表,例如Stripe.API.request(params, :post, "tokens", %{}, ssl_options: [cacertfile: "/Users/apple/.ssh/CERT.pem"], proxy: System.get_env("VGS_SANDBOX_BASE_URL")) 或者...您可以通过在配置中设置 :hackney 选项来覆盖客户端模块,例如用HTTPoison 或其他一些客户端替换它(考虑到HTTPoison 使用:hackney 本身,这可能看起来很愚蠢)。
  • @Everett 就是这样,直接传递选项有效!非常感谢
  • 酷,我将其添加为答案,以便您接受。

标签: elixir phoenix-framework http-proxy


【解决方案1】:

在调用Stripe.API.request/5 时省略hackney_options 键——直接传递opts 列表,例如

Stripe.API.request(
  params, 
  :post, 
  "tokens", 
  %{}, 
  ssl_options: [cacertfile: "/Users/apple/.ssh/CERT.pem"],  
  proxy: System.get_env("VGS_SANDBOX_BASE_URL")
) 

请记住,当最后一个参数是关键字列表时,括号通常会被省略。您可以包含它们以帮助更轻松地查看哪些事物属于该最终参数,例如

Stripe.API.request(
  params, 
  :post, 
  "tokens", 
  %{}, 
  [
    ssl_options: [cacertfile: "/Users/apple/.ssh/CERT.pem"],  
    proxy: System.get_env("VGS_SANDBOX_BASE_URL")
  ]
) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 2013-05-25
    • 2016-06-23
    相关资源
    最近更新 更多