Projektvorschlag: libCurl-Wrapper

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

ts-soft hat geschrieben: Ich würde aber lieber Prototypes nutzen statt CallCFunctionFast und gleich
mit Compilerdirektiven für Win und Lin.
Könnte das bisherige darauf anpassen, aber nur wenn Dir die Prototypes
recht sind (kein zusätzlicher Overhead durch Proceduren und sicherer)

Gruß
Thomas
ja, natürlich gehen auch Prototypes (muß mir mal angewöhnen die zu benutzen) ... und meinen kleinen include generator abändern (der stammt noch aus 3.94 zeiten...) habe absolut nichts dagegen und die Compilerdirective dürfte momentan wohl nur in der Auswahl der DLL/.SO liegen...

@vTvT: da muss ich Thomas allerdings recht geben...ich benutze zwar (manchmal) auch ein Konsolenprogramm aber nur, wenn ich keine andere Möglichkeit habe (sei es wegen mangeldem Wissen oder ich brauche eine Funktion SOFORT... dann werde ich es aber über kurz oder lang mit eigenem Code ersetzen... oder es ist einfach erforderlich...weil gewünscht...)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

vonTurnundTaxis hat geschrieben:In diesem Fall ist der Unterschied zwischen der SO und dem Program recht marginal...
Und wie kommt man an die Ergebnisse der Funktionen? StdOut lesen?
Das wäre mir zu umständlich. Da ist die *.so oder *.dll praktischer, diese sind
schließlich auch dafür vorgesehen, von anderen Programmen genutzt zu
werden.

// Nachtrag:
@walker
Werde heute noch die geänderte, nur das bisherige, Version hier Posten.
Bin schon dabei es zu ändern, Code wird auch kürzer
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Angepaßte Version mit Prototypes:
http://ts-soft.eu/dl/libdef_curl_.pbi

Für Funktionen, die einen String zurückgeben, sollten trotzdem Proceduren
eingebaut werden, das erspart das PeekS
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
bender-rulez
Beiträge: 6
Registriert: 17.06.2007 19:21

Beitrag von bender-rulez »

Hallo,

super für die User-Lib, jedoch ist das wohl noch nicht ganz ausgereift?

Jedenfalls erhalte ich bei folgendem Code keinen Erfolg!

Code: Alles auswählen

	curlGlobalHandle = curl_global_init()
        ; gibt 0 zurück


	curlHandle = curl_easy_init()
        ; gibt mir einen Wert größer 0 zurück


        value.s = "http://www.marcbender.de"

 	optionReturn = curl_easy_setopt(curlHandle, CURLOPT_URL, value)
        
	messagerequester("INFO", peeks(curl_easy_strerror(optionReturn)),0)
       ; curl_easy_setopt  liefert einen Fehler, "failed init"


	res = curl_easy_perform(curlHandle)


Ok, was mache ich falsch!?!?![/code]
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

bender-rulez hat geschrieben: Ok, was mache ich falsch!?!?![/code]
Du hast vergessen die *.pbi zu vervollständigen, da fehlt fast alles zum
funktionieren :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
bender-rulez
Beiträge: 6
Registriert: 17.06.2007 19:21

Beitrag von bender-rulez »

ok,ok, warum einfach...

nun, da ich bisher noch nie eine pbi erstellt hab, ist natürlich für mich erstmal fraglich, was noch zu tun ist? :-)

Sofern man mir nen Tipp gibt, kann ich das gerne machen...
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich vermute mal, das Du Einsteiger bist, somit wird es im Moment nicht viel
Sinn machen.

Ich persönlich benötige die Lib nicht und habe deswegen im Moment keine
Lust und Zeit dafür. Wenn Du Dir die Documentation besorgst, diie Parameter
usw. vervollständigst sollte es laufen. C-Grundkenntnisse wären von Vorteil.
Gute PB Kenntnisse sind natürlich auch erforderlich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
bender-rulez
Beiträge: 6
Registriert: 17.06.2007 19:21

Beitrag von bender-rulez »

Naja, Anfänger würd ich jetzt nicht mehr so sagen...
Egal, was ich bisher gemacht hatte war:

1. API von libcurl lesen!

2. Parameter in libdef_curl_.pbi vervollständigen


z.B. bei der initial wichtigen Funktion 'curl_easy_setopt' in der pbi

Code: Alles auswählen

...
PrototypeC curl_easy_setopt_(*handle, option.l, parameter.l)
...
Leider liefert diese jedoch entsprechende Fehler.

Beispiel:
wird im Code dieser Aufruf gemacht

Code: Alles auswählen

optionReturn = curl_easy_setopt(curlHandle, CURLOPT_URL, "http://xyz.de")
liefert die Funktion einen Errorcode, der, wenn er mittels

Code: Alles auswählen

peeks(curl_easy_strerror(optionReturn))
ausgelsen wird (im Klartext) "failed init" liefert!

Ein Problem hab ich da scheinbar a) mit den Datentypen und b) evtl. mit dem Handle?

a)
es funktioniert überhaupt erst beim Compilieren, wenn ich in der pbi das wie folgt abändere:

Code: Alles auswählen

...
PrototypeC curl_easy_setopt_(*handle, option.l, parameter.s)
...
wobei ich glaube "option.l" sollte ebenfalls ein "option.s" sein!?

Also:

Code: Alles auswählen

optionReturn = curl_easy_setopt(curlHandle, "CURLOPT_URL", "http://xyz.de")
liefert dann aber trotzdem ein "failed init"! :-(

Jedenfalls lässt sich "curl_easy_setopt" nicht nutzen!
bender-rulez
Beiträge: 6
Registriert: 17.06.2007 19:21

Beitrag von bender-rulez »

Letztlich würde ich libcurl benötigen um https zu nutzen!
Und zwar unter Linux bzw. cross-platform!

Falls jemand eine andere Lösung hat, immer her damit!
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

CURLOPT_URL ist eine Konstante die musst du definieren und dann #CURLOPT_URL.... das Option.l ist richtig :)
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Antworten