<div dir="ltr">Hi cafe, <div><br></div><div>I'm  trying to interface BTCe and get my account info.<br><br>I have found following peace of code, which I would like to build on top: <a href="http://pastebin.com/AfDt8jcs">http://pastebin.com/AfDt8jcs</a><br>
<br>I have added to the request a POST method, but I'm still getting error from BTCe: <br>"{\"success\":0,\"error\":\"<b>invalid nonce parameter; on key:0</b>, you sent:\"}"<div>
<br></div><div>The API is documented here: <a href="https://btc-e.com/api/documentation">https://btc-e.com/api/documentation</a></div><div>In short:</div><div><p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px">
Authorization is performed by sending the following HTTP Headers:</p><p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px"><b style="margin:0px;padding:0px">Key</b> — API key</p>
<p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px"><b style="margin:0px;padding:0px">Sign</b> — POST data (?param=val&param1=val1) signed by a secret key according to HMAC-SHA512 method;</p>
<p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px">Sent on <strong style="margin:0px;padding:0px"><a href="https://btc-e.com/tapi">https://btc-e.com/tapi</a></strong> .</p>
<p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px">All requests must also include a special <i style="margin:0px;padding:0px">nonce</i> POST parameter with increment integer. (>0)</p>
<br style="margin:0px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px"><p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px">The method name is sent via POST parameter method.</p>
<p style="margin:0px 0px 5px;padding:0px;color:rgb(0,0,0);font-family:Verdana,Arial,sans-serif;font-size:13px">All the method parameters are sent via POST.</p></div><div><br></div><div><br></div><div><br></div><div><br></div>
<div><br></div><div><div>{-# LANGUAGE OverloadedStrings #-}</div><div> </div><div>import Network.HTTP.Conduit</div><div>import Network.HTTP.Types.Header</div><div> </div><div>import Data.Word</div><div>import Data.ByteString.Lazy(pack)</div>
<div>import qualified Data.ByteString.Char8 as B</div><div> </div><div>import Data.Digest.Pure.SHA</div><div>import Data.Time.Clock.POSIX</div><div><br></div><div>-------------------------------------------------------------------------------</div>
<div> </div><div>toWord8 :: String -> [Word8]</div><div>toWord8 = Prelude.map (fromIntegral . fromEnum)</div><div> </div><div>-------------------------------------------------------------------------------</div><div> </div>
<div>key :: B.ByteString</div><div>key = "key"</div><div> </div><div>secret :: String</div><div>secret = "secret"</div><div> </div><div>url :: String</div><div>url = "<a href="https://btc-e.com/tapi">https://btc-e.com/tapi</a>"</div>
<div> </div><div>-------------------------------------------------------------------------------</div><div> </div><div>querystring :: Int -> String</div><div>querystring nonce = "?method=getInfo&nonce=" ++ show nonce</div>
<div> </div><div>sign :: Int -> B.ByteString</div><div>sign nonce = B.pack $ show $</div><div>  hmacSha512 (pack $ toWord8 secret) (pack $ toWord8 $ querystring nonce)</div><div> </div><div>main :: IO ()</div><div>main = do</div>
<div>  nonce <- fmap floor getPOSIXTime</div><div>  putStrLn $ url ++ (querystring nonce)</div><div>  ticker <- parseUrl $ url ++ (querystring nonce)</div><div>  let request = ticker</div><div>        { secure = True</div>
<div>        , method = "POST"</div><div>        , requestHeaders = (requestHeaders ticker)  </div><div>                           ++ [ ("Content-Type", "application/x-www-form-urlencoded")</div>
<div>                              , ("Host", "<a href="http://btc-e.com">btc-e.com</a>")</div><div>                              , ("User-Agent", "Haskell Trading Robot")</div><div>
                              , ("Key", key)</div><div>                              , ("Sign", sign nonce)]}</div><div>  putStrLn $ show request</div><div>  response <- withManager $ httpLbs request</div>
<div>  print $ responseBody response</div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div>any ideas more than welcome</div><div>cheers,</div><div>miro</div></div></div>
</div>