hilite.me API-Problem

    • Offizieller Beitrag

    Hi,
    ich habe mal den Online Html-Generator "hilite.me" getestet. Enthält auch AutoIt als Source. Nun habe ich versucht über die API darauf zuzugreifen. Doch das ist fehlerhaft. Ich habe getestet: ConsoleWrite("Hallo Welt!" & @CRLF)
    Im Return ist dann nur das blau gefärbte enthalten, das rot gefärbte fehlt. Was läuft da verkehrt?

    Spoiler anzeigen
    [autoit][/autoit]
    Spoiler anzeigen

    $sCode = 'ConsoleWrite("Hallo Welt!" & @CRLF)'

    ConsoleWrite(_GetStyledHtml($sCode) & @LF)

    Func _GetStyledHtml($_sCode, $_sLexer='autoit', $_sStyle='emacs', $_iLineNum=1, $_sDivStyle='')
    Local $sPostData = "code=" & $_sCode & "&lexer=" & $_sLexer & "&style=" & $_sStyle & "&linenos=" & $_iLineNum & "&divstyles=" & $_sDivStyle
    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("POST", "http://hilite.me/api", False)
    $oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    $oHTTP.Send($sPostData)
    Return $oHTTP.ResponseText
    EndFunc

    #cs
    # hilite.me API documentation

    GET or POST to http://hilite.me/api with these parameters:

    * code: source code to format
    * lexer: [lexer](http://pygments.org/docs/lexers/) to use, default it 'python'
    * options: optional comma-separated list of lexer options
    * style: [style](http://pygments.org/docs/styles/) to use, default is 'colorful'
    * linenos: if not empty, the HTML will include line numbers
    * divstyles: CSS style to use in the wrapping <div> element, can be empty

    [autoit]

    The request will return the HTML code in UTF-8 encoding.
    #ce

    [/autoit]


    Ein weiteres Problem: Da UTF-8 codiert wird, sind natürlich alle Nicht-ASCII Zeichen geschrottet. Wie könnte man das umgehen?

  • Bei mir schreib er in die Console:

    [autoit][/autoit]
    Spoiler anzeigen
    [autoit]


    <!-- HTML generated using hilite.me --><div style="background: #f8f8f8; overflow:auto;width:auto;"><table><tr><td><pre style="margin: 0; line-height: 125%">1</pre></td><td><pre style="margin: 0; line-height: 125%"><span style="color: #00A000">ConsoleWrite</span>(<span style="color: #BB4444">&quot;Hallo Welt!&quot;</span>
    </pre></td></tr></table></div>

    [/autoit]
    [autoit][/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • evtl. ein Bug? Meine bei denen und nicht Dich. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Nicht als "&amp;" maskieren, da du die Daten über POST weiter gibst, musst du das "&" wie in einer URL maskieren.
    Probiers mal damit: "%26" = &, einfach nochmal senden ;)

    €: Ist des Rätsels Lösung ;)
    Bei mir kam das raus:

    [autoit]


    <!-- HTML generated using hilite.me --><div style="background: #f8f8f8; overflow:auto;width:auto;"><table><tr><td><pre style="margin: 0; line-height: 125%">1</pre></td><td><pre style="margin: 0; line-height: 125%"><span style="color: #00A000">ConsoleWrite</span>(<span style="color: #BB4444">&quot;Hallo Welt!&quot;</span> <span style="color: #666666">&amp;</span> <span style="color: #B8860B">@CRLF</span>)
    </pre></td></tr></table></div>

    [/autoit]


    prog@ndy hat eine Funktion für das Enkodieren von URLs geschrieben (oder dem Content, also einfach "$oHTTP.Send(URLEncode($sPostData))"), nämlich HIER (Bitte klick mich)

    €2: Du überträgst quasi "http://hilite.me/api?&code=ConsoleWrite("HalloWelt!"&@CRLF&lexer=...", de facto setzt du also eine neue POST Variable mit dem Namen "@CRLF".

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

    4 Mal editiert, zuletzt von Xorianator (26. Oktober 2014 um 23:31)