
On Sat, Aug 22, 2009 at 4:36 PM, Diego Souza
Hi all,
I wrote a small library in haskell do deal with oauth authentication. It turns out it is my first library in haskell as well. As I'm beginner in haskell, I'm asking for a review of someone more experienced/proficient before even daring to create a cabal pkg and dist it to hackage. :-)
Any help/comments on this will be highly welcome.
http://projects.bitforest.org/hoauth/
$ darcs get http://projects.bitforest.org/hoauth/ # should do the trick
Thanks in advance, -- ~dsouza yahoo!im: paravinicius gpg key fingerprint: 71B8 CE21 3A6E F894 5B1B 9ECE F88E 067F E891 651E _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Hi, I'm not familiar at all with OAuth but I have some general suggestions that might make your code in "Consumer.hs" a bit nicer. These suggestions also probably apply elsewhere in your code. - In the Token datatype, you can automatically create the accessor functions (oath_token, etc.) by using named fields: data Token = Request { oath_token :: String, oath_token_secret :: String, oath_extra :: R.Parameter } | Access { oath_token :: String, oath_token_secret :: String, oath_extra :: R.Parameter } This will create your accessor functions for free, and you get update syntax to boot. (Google for "haskell named fields" for details.) - When you have multiple datatype constructors with similar arguments (as with Token or Request), it may be better to use a Boolean-type flag saying which one it is (e.g. HTTP or HTTPS) and then a single datatype with all of the different arguments in it. This may help you remove code duplication elsewhere. - I think you can use join from Control.Monad and functions from Control.Applicative in your "response" function to make it quite a bit cleaner. I know this email has been a bit terse; ask if you have any questions about the above. Hope that helps, Alex