Seite 1 von 1

PhoneGap & curl

Verfasst: 23.03.2014 02:35
von Falko
Hier wurde öffter's von PhoneGap geschrieben.

in der Doc dazu steht ein Beispiel, wie man Apps dort mithilfe
von curl löschen kann. Ich habe im englischen Forum sowie hier
einige Beispiele zu der curlLIB gesehen, aber irgendwie kriege ich
das nicht hin eine APP über DELETE dort zu löschen.

Hier mal der Link zur API - DOC.

http://docs.build.phonegap.com/en_US/3. ... v1_apps_id

Ich würde mich sehr über eure Hilfe freuen, wie man diesen Satz mit der curlLIB einsetzen muss, damit das funktioniert.

Vielleicht kennt sich hier jemand speziell mit PhoneGap aus und hat dazu einen passenden Code.
Als Versuch, woran ich gescheitert bin, habe ich hier einen zusammengesetzten Versuchscode vergebens probiert.

Code: Alles auswählen

;================================================================
; Project  PhoneGap in Verbindung mit LibCurl Lib. aus den englischen Forum.
; Title     Delete App from PhoneGap.com
; Author    Falko
; Date      23.03.2014
; Notes     Use curl-lib 
;================================================================

XIncludeFile "RW_LibCurl_Res.pb"
XIncludeFile "RW_LibCurl_Inc.pb"
Benutzername.s= "EMail"
Passwort.s= "Kennwort"

URL.s=" -u "+Benutzername+":"+Passwort+" -X DELETE https://build.phonegap.com/api/v1/apps/"+AppID
;URL.s = "https://build.phonegap.com/api/v1"; Dieses funktioniert

curl  = curl_easy_init()
If curl
  
 Debug curl_easy_setopt(curl, #CURLOPT_URL, @URL); Fehlercode 6 bei ...perform
 ; Debug curl_easy_setopt(curl, #CURLOPT_HTTPPOST, @URL); Fehlercode 3 bei ...perform
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_HEADER, 0); @"")
  Debug curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteFunction())
  res = curl_easy_perform(curl)
  Debug res
  Debug "----"
  Debug  RW_LibCurl_GetData
  Debug "----"
  Debug curl_easy_cleanup(curl)
EndIf
Grüße, Falko

Re: PhoneGap & curl

Verfasst: 23.03.2014 22:31
von Rebon
Ist es eigentlich Absicht, dass du Benutzername und Passwort jeweils einen String zuweist, aber in dem String URL ebenfalls die Namen der Variablen nur als Text übernimmst?

Und mit curl kenne ich mich überhaupt nicht aus, ich hatte nur eben gerade gelesen, dass es zu Problemen mit HTTPS kommen könnte. Wobei ich dies wie gesagt nicht im Ansatz beurteilen kann, ob dies auch auf #CURLOPT_HTTPPOST zutrifft.

http://forums.purebasic.com/german/view ... 5da1d86113

Re: PhoneGap & curl

Verfasst: 23.03.2014 22:40
von Falko
Sorry, das hatte ich in der späten Nacht vergessen anzupassen.
Jetzt müsste das richtig sein.

Ich vermute, das es an libCurl liegt, das man das so nicht eingeben kann.
Fehlermeldung bei res ist hierbei 6, was bedeutet, das die Seite nicht aufgelöst werden kann.

Ändere ich die URL ohne Passwort und Benutzername, so wie hier,
URL.s = "https://build.phonegap.com/api/v1"; Dieses funktioniert
Wird folgende Augabe angezeigt, das die Logindaten fehlen:
https://build.phonegap.com/api/v1

...

----
{"error":"You need to sign in or sign up before continuing."}
----
0
Also das sieht schonmal gut aus. Also hat das wohl mit den Logindaten zu tun. Ich habe
zwar noch ein anderes Beispiel mit Curl gesehen, wo nacheinander Seite und Kennwort&Passwort
eingegeben werden, aber weiß nicht, wie das mit dem Delete erweitert werden müsste. :(

#CURLOPT_HTTPPOST hatte ich auch ausprobiert, wobei hier der fehler 3 bei rauskommt.
was foglendes bedeutet (http://curl.haxx.se/libcurl/c/libcurl-errors.html):
CURLE_URL_MALFORMAT (3)
The URL was not properly formatted.
[Edit] Wenn ich folgenden Code ausführe, wird mir mit Login alles korrekt ausgeführt.
Nur so, wie ich laut PhoneGap - API den obigen Code in CURL ausführen soll, funktioniert nicht, weil immer Fehler 3.
Also irgendwas fehlt noch.

Hier der folgende Code, der mit reinen Login auf die HTTPS... funktioniert:

Code: Alles auswählen

;================================================================
; Project   Login bei PhoneGap.com unter mithilfe von LibCurl
; Title     Delete App from PhoneGap.com
; Author    Falko
; Date      24.03.2014
; Notes     Use curl-lib 
;================================================================

XIncludeFile "RW_LibCurl_Res.pb"
XIncludeFile "RW_LibCurl_Inc.pb"
Benutzername.s= "Dein Benutzername oder deine EMail"
Passwort.s= "Dein Kennwort"

UserPwd.s=Benutzername+":"+Passwort
URL.s = "https://build.phonegap.com/api/v1"

curl  = curl_easy_init()
If curl
  Debug curl_easy_setopt(curl, #CURLOPT_URL, @URL)
  Debug curl_easy_setopt(curl, #CURLOPT_USERPWD, @UserPwd)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_HEADER, 0); @"")
  Debug curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteFunction())
  res = curl_easy_perform(curl)
  Debug res
  Debug "----"
  MessageRequester("Ausgabe", RW_LibCurl_GetData())
  Debug "----"
  Debug curl_easy_cleanup(curl)
EndIf
Vielleicht habt ihr ja noch einen super Tipp für mich, wie ich diese Zeile, aber mit Kennwort umsetzen muss:
[/Edit]
Gruß,
Falko

Re: PhoneGap & curl

Verfasst: 24.03.2014 20:01
von Falko
Da hier sonst keiner hierzu eine Antwort parat hat, habe ich
endlich die passende Lösung selber herausgefunden :mrgreen:

Praktisch wäre PhoneGap für den Spiderbasic Einsatz. Ich selber benutze
NSB/AppStudio welches Basic-Code bzw. Java nach PhoneGap hochlädt um
eine App generieren zu lassen. Da man beim Free-Account nur eine App
generieren kann, muss man die aktuelle vorher löschen. Es ist aber umständlich
jedesmal sich einzuloggen und dort die App mittels Delete-Button zu entfernen.
Darum habe ich mithilfe der LibCurl eine Möglichkeit gesucht dieses zu vereinfachen.
Falls jemand sowas gebrauchen kann, stelle ich dieses hier frei zur Verfügung :).

Code: Alles auswählen

;================================================================
; Project   Login und Delete App bei PhoneGap.com unter mithilfe von LibCurl
; Title     Delete App from PhoneGap.com
; Author    Falko
; Date      24.03.2014
; Notes     Use curl-lib 
;================================================================

XIncludeFile "RW_LibCurl_Res.pb"
XIncludeFile "RW_LibCurl_Inc.pb"

Benutzername.s= "Dein Benutzername"; Emailadresse
Passwort.s= "Dein Passwort"
AppID.s=""    ; Falls ihr sehen wollt, welche AppID online ist, einfach den Leerstring so belassen 
;              und die komplette Zeile ...@"DELETE"... auskommentieren.          
UserPwd.s=Benutzername+":"+Passwort

URL.s = "https://build.phonegap.com/api/v1/apps/"+AppID.s 

curl  = curl_easy_init()
If curl
  Debug curl_easy_setopt(curl, #CURLOPT_URL, @URL)
  Debug curl_easy_setopt(curl, #CURLOPT_CUSTOMREQUEST, @"DELETE")
  Debug curl_easy_setopt(curl, #CURLOPT_USERPWD, @UserPwd)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_HEADER, 0); @"")
  Debug curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteFunction())
  res = curl_easy_perform(curl)
  Debug res
  
  Debug "----"
  MessageRequester("Ausgabe", RW_LibCurl_GetData())
  Debug RW_LibCurl_GetData()
  Debug "----"
  
  Debug curl_easy_cleanup(curl)
EndIf
MfG, Falko

Re: PhoneGap & curl

Verfasst: 25.03.2014 00:40
von Falko
Nun habe ich ein weiteres Problem mt Purebasic 5.22 LTS X86.
Ich kann zwar mit eingeschalteten Debugger compilieren und ohne irgendein Kennwort und Benutzernamen
bekomme ich in der Messagebox sowie im Debugger eine html-Textausgabe angezeigt.
sobad ich aber eine Exe erzeuge, oder auch ohne Debuger compiliere, wird nichts mehr angezeigt.

Könnte das ein Bug sein, der mit dem Debuger zu tun hat?

Hier das komplette Paket mit der lib curl und meinem PB-Code sowie den angepassten Wrapper zu PB 5.22LTS X86.

Bei X64 bekomme ich Polink-Errors, was vermutlich an der dll liegen müsste.

http://www.youtech.de/Program/PhoneGap.zip

Ich hoffe hier kann mir jemand einen Rat geben, woran das liegen kann :oops:

Mit freundlichen Grüßen,
Falko

Re: PhoneGap & curl

Verfasst: 25.03.2014 00:55
von Andreas21
Den Code so benutzt?

Code: Alles auswählen

;================================================================
; Project   Login und Delete App bei PhoneGap.com unter mithilfe von LibCurl
; Title     Delete App from PhoneGap.com
; Author    Falko
; Date      24.03.2014
; Notes     Use curl-lib 
;================================================================

XIncludeFile "RW_LibCurl_Res.pb"
XIncludeFile "RW_LibCurl_Inc.pb"

Benutzername.s= "Dein Benutzername"; Emailadresse
Passwort.s= "Dein Passwort"
AppID.s=""    ; Falls ihr sehen wollt, welche AppID online ist, einfach den Leerstring so belassen 
;              und die komplette Zeile ...@"DELETE"... auskommentieren.          
UserPwd.s=Benutzername+":"+Passwort

URL.s = "https://build.phonegap.com/api/v1/apps/"+AppID.s 

curl  = curl_easy_init()
If curl
  Debug curl_easy_setopt(curl, #CURLOPT_URL, @URL)
  Debug curl_easy_setopt(curl, #CURLOPT_CUSTOMREQUEST, @"DELETE")
  Debug curl_easy_setopt(curl, #CURLOPT_USERPWD, @UserPwd)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
  Debug curl_easy_setopt(curl, #CURLOPT_HEADER, 0); @"")
  Debug curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteFunction())
  res = curl_easy_perform(curl)
  Debug res
  
  Debug "----"
  MessageRequester("Ausgabe", RW_LibCurl_GetData())
  Debug RW_LibCurl_GetData()
  Debug "----"
  
  Debug curl_easy_cleanup(curl)
EndIf
Wenn ja werden doch Zeilen mit Debug beim erstellen ohne Debugger ausgeschlossen.

Die werden nicht ausgeführt dann.
Das würde bleiben:

Code: Alles auswählen

;================================================================
; Project   Login und Delete App bei PhoneGap.com unter mithilfe von LibCurl
; Title     Delete App from PhoneGap.com
; Author    Falko
; Date      24.03.2014
; Notes     Use curl-lib 
;================================================================

XIncludeFile "RW_LibCurl_Res.pb"
XIncludeFile "RW_LibCurl_Inc.pb"

Benutzername.s= "Dein Benutzername"; Emailadresse
Passwort.s= "Dein Passwort"
AppID.s=""    ; Falls ihr sehen wollt, welche AppID online ist, einfach den Leerstring so belassen 
;              und die komplette Zeile ...@"DELETE"... auskommentieren.          
UserPwd.s=Benutzername+":"+Passwort

URL.s = "https://build.phonegap.com/api/v1/apps/"+AppID.s 

curl  = curl_easy_init()
If curl
  res = curl_easy_perform(curl)
  
  MessageRequester("Ausgabe", RW_LibCurl_GetData())
  
EndIf
Es hört sich nur stark danach an^^
Da er im Debug Mode geht aber ohne nicht.

Re: PhoneGap & curl

Verfasst: 25.03.2014 15:46
von Falko
Jep, und Danke Andreas21.
Da haben die mit dem Debugger wohl einen riesen Bug wieder eingebaut.
Wenn ich die stehen lasse, werden beim Exe-Compilat die kompletten Zeilen wohl
ausgelassen. Da deine beiden Beispiele auch nicht funktionierten, kam mir dank Deinen Tipp,
nun nur die debug-Befehle herauszunehmen. Und siehe da es funst endlich :).

Ich werde mein Beispiel nochmal alle "debug" entfernen und als Zip wieder hochladen.

Hier das laufende Beispiel nochmal, welches nun auch als Exe compiliert, funktioniert.

Code: Alles auswählen

;================================================================
; Project   Login und Delete App bei PhoneGap.com unter mithilfe von LibCurl
; Title     Delete App from PhoneGap.com
; Author    Falko
; Date      24.03.2014
; Notes     Use curl-lib
;================================================================

XIncludeFile "RW_LibCurl_Res.pb"
XIncludeFile "RW_LibCurl_Inc.pb"

Benutzername.s= "Dein Benutzername"; Emailadresse
Passwort.s= "Dein Passwort"
AppID.s=""    ; Falls ihr sehen wollt, welche AppID online ist, einfach den Leerstring so belassen
;              und die komplette Zeile ...@"DELETE"... auskommentieren.         
UserPwd.s=Benutzername+":"+Passwort

URL.s = "https://build.phonegap.com/api/v1/apps/"+AppID.s

curl  = curl_easy_init()
If curl
  curl_easy_setopt(curl, #CURLOPT_URL, @URL)
  curl_easy_setopt(curl, #CURLOPT_CUSTOMREQUEST, @"DELETE")
  curl_easy_setopt(curl, #CURLOPT_USERPWD, @UserPwd)
  curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYPEER, 0)
  curl_easy_setopt(curl, #CURLOPT_SSL_VERIFYHOST, 0)
  curl_easy_setopt(curl, #CURLOPT_HEADER, 0); @"")
  curl_easy_setopt(curl, #CURLOPT_WRITEFUNCTION, @RW_LibCurl_WriteFunction())
  res = curl_easy_perform(curl)
  
 
    MessageRequester("Ausgabe",RW_LibCurl_GetData())
    
    
  curl_easy_cleanup(curl)
EndIf
Ich habs mal im englischen Forum als Bug gemeldet und hoffe die verstehen mein denglisch :)
http://www.purebasic.fr/english/viewtop ... =4&t=58854

Gruß,
Falko

Re: PhoneGap & curl

Verfasst: 25.03.2014 16:24
von ts-soft
Es war schon immer so, das Debug-Zeilen nicht mitkompiliert werden.
You made my day :lol:

Gruß
Thomas

Re: PhoneGap & curl

Verfasst: 25.03.2014 16:32
von Falko
Dann habe ich ein PB-Leben lang das nicht gemerkt und nun
weiß ich es :lol:

Wobei nur ein Entfernen des "debug" bei solchen Zeilen hätte reichen können.
Geht anscheinend nicht so einfach, da manche Debugausgaben wie Debug ----- oder so,
dann als Fehler im Code interpretiert werden :bounce:
@ts-soft . Ich werde es mir zum Herzen nehmen :lol: