Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Arti Arti
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 147
    • Issues 147
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 6
    • Merge requests 6
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Core
  • ArtiArti
  • Issues
  • #287

Closed
Open
Created Jan 12, 2022 by Ian Jackson@DizietMaintainer1 of 3 tasks completed1/3 tasks

Include (or ship) recommended integration layer(s) for various HTTP clients

Many users will want to use Tor to make https requests. Doing this right now is quite a performance involving TlsConnectors and so on. We have arti-client/examples/hyper.rs and it is already complex and doesn't do TLS.

Integration layers we ought to provide:

  • hyper (done in !355 (merged) et preq)
  • reqwest (may need new upstream hook)
  • ureq (may need new upstream hook)

We should provide a nice way to do this.

Ideas:

  • New crate arti_http_client[_hyper] which contains the appropriate glue, with its own example.

  • IMO we should not have any example which supports HTTP but not HTTPS. If we find it is difficult to provide an HTTPS-capable example we need to improve our provided APIs.

  • Talk to upstream of ureq and maybe that would let us provide a nice simple API there. Perhaps this is a separate crate or a separate feature of the arti_http_client crate.

See also:

  • #286 in which I argue that we should provide a sync API
  • #285 where I discuss config, of which scheme this new crate would need to partake
  • #284 (closed) whihc contains opinions about client construction which may be relevant

Adding this API is not in itself an API break but building it may highlight API problems in arti_client, so I have added the "API break" tag.

Edited Mar 03, 2022 by Ian Jackson
Assignee
Assign to
Time tracking