linkedin icon indicating copy to clipboard operation
linkedin copied to clipboard

Convert Internals to Faraday to support middleware and instrumentation

Open hexgnu opened this issue 11 years ago • 10 comments

Right now we have reimplemented things many many times. It'd be nice to convert all of the internals to faraday so that we can easily extend the linkedin gem.

hexgnu avatar Jan 27 '14 17:01 hexgnu

@hexgnu The Twitter gem is moving from Faraday to HTTP (https://twitter.com/sferik/status/426910345173929984). I checked out the HTTP gem over the weekend, the interface is slick, but the internals maybe a little immature.

Let's discuss on Thursday, though if Faraday is what's comfortable for both of us, we should go with that.

cc: @sferik

hundredwatt avatar Jan 27 '14 18:01 hundredwatt

The Twitter gem is moving from Faraday to HTTP

I should clarify…I’ve been working on a branch that swaps out Faraday for the HTTP gem, but it’s still experimental and far from being merged into master. I wouldn’t expect this change to happen any time soon, if ever. That said, the early results in that branch look promising.

the internals maybe [sic] a little immature

Yeah. The current version of the HTTP gem (0.5.0) is missing a bunch of stuff but it’s under very active development. I wouldn’t recommend switching until 0.6.0 or 1.0.0 is released. The HTTP gem doesn’t support middleware or swappable adapters like Faraday, so if your users depend on those features, I wouldn’t recommend switching at all. That said, after making the swap, tests run about 4X faster (4 seconds vs. 16 seconds), which is quite nice.

sferik avatar Jan 27 '14 18:01 sferik

awesome thanks @sferik for clarifying

hexgnu avatar Jan 27 '14 18:01 hexgnu

@sferik Thanks for clarifying, definitely not room in 140 characters for all that nuance :)

Sounds like we should use Faraday @hexgnu

hundredwatt avatar Jan 27 '14 19:01 hundredwatt

About 2 years ago in the v4 branch I started moving this gem to Faraday:

https://github.com/hexgnu/linkedin/blob/v4/lib/linked_in/connection.rb#L22

ryanatwork avatar Jan 27 '14 23:01 ryanatwork

Oh wow cool @ryanatwork I'll see if I can resurrect some of that

hexgnu avatar Jan 27 '14 23:01 hexgnu

@hexgnu Is this a matter of replacing oauth with oauth2 gem? Or some major rewrite? I have a pretty urgent need for caching, so I'm thinking about the best quick way to accomplish this. Maybe, you could tell what's the likelyhood that you switch to faraday in the nearest couple of weeks? Or do I better just go with some temporary solution(monkey-patching, reimplement my own subset of the gem etc.)? Thanks.

RKushnir avatar Feb 03 '14 17:02 RKushnir

@hundredwatt and I paired up on this pretty recently so I'd say this will be happening within the next couple of weeks. We've got a few test failures to fix but overall it went well.

Also I'll add in the ability to add your own middleware layer to faraday so you can cache responses.

Cheers, and stay tuned

hexgnu avatar Feb 03 '14 17:02 hexgnu

@rkushnir https://github.com/hexgnu/linkedin/pull/212 currently in progress.

After this is in place you'll be able to


LinkedIn.middleware << FaradayMiddleware::Caching

Which would cache requests and responses.

hexgnu avatar Feb 03 '14 21:02 hexgnu

@hexgnu That is impressive! Thanks.

RKushnir avatar Feb 03 '14 21:02 RKushnir