Update of /project/cl-soap/cvsroot/cl-soap/test In directory common-lisp.net:/tmp/cvs-serv26088/test
Modified Files: test-google-adwords.lisp Log Message: more work on xsd type handling in wsdl-soap-call more specifically type element multiplicity added some simple experimental wsdl caching
Date: Thu Sep 22 17:30:01 2005 Author: scaekenberghe
Index: cl-soap/test/test-google-adwords.lisp diff -u cl-soap/test/test-google-adwords.lisp:1.5 cl-soap/test/test-google-adwords.lisp:1.6 --- cl-soap/test/test-google-adwords.lisp:1.5 Wed Sep 21 19:08:04 2005 +++ cl-soap/test/test-google-adwords.lisp Thu Sep 22 17:30:01 2005 @@ -1,6 +1,6 @@ ;;;; -*- mode: lisp -*- ;;;; -;;;; $Id: test-google-adwords.lisp,v 1.5 2005/09/21 17:08:04 scaekenberghe Exp $ +;;;; $Id: test-google-adwords.lisp,v 1.6 2005/09/22 15:30:01 scaekenberghe Exp $ ;;;; ;;;; Some test on the Google AdWords API (not publically available) ;;;; @@ -58,6 +58,14 @@ (defun parse-all-wsdl () (mapcar #'parse-wsdl-url *google-adwords-api-wsdl-urls*))
+(defvar *wsdl-cache* (make-hash-table :test #'equal)) + +(defun wsdl-cache-get (url) + (let ((cached (gethash url *wsdl-cache*))) + (if cached + cached + (setf (gethash url *wsdl-cache*) (parse-wsdl-url url))))) + ;;; some test calls
(defun get-usage-quota-this-month () @@ -78,13 +86,13 @@
#+NIL (defun get-usage-quota-this-month () - (wsdl-soap-call "https://adwords.google.com:443/api/adwords/v2/InfoService?wsdl" + (wsdl-soap-call (wsdl-cache-get "https://adwords.google.com:443/api/adwords/v2/InfoService?wsdl") "getUsageQuotaThisMonth" :headers `("email" ,*google-adwords-email* "password" ,*google-adwords-password* "useragent" ,*google-adwords-user-agent* "token" ,*google-adwords-token* - "clientEmail" *google-client-email*))) + "clientEmail" ,*google-client-email*)))
(defun get-method-cost (service method &optional (date (ut))) (multiple-value-bind (result headers) @@ -107,7 +115,7 @@
#+NIL (defun get-method-cost (service method &optional (date (ut))) - (wsdl-soap-call "https://adwords.google.com:443/api/adwords/v2/InfoService?wsdl" + (wsdl-soap-call (wsdl-cache-get "https://adwords.google.com:443/api/adwords/v2/InfoService?wsdl") "getMethodCost" :input `("service" ,service "method" ,method @@ -116,12 +124,12 @@ "password" ,*google-adwords-password* "useragent" ,*google-adwords-user-agent* "token" ,*google-adwords-token* - "clientEmail" *google-client-email*))) + "clientEmail" ,*google-client-email*)))
(defun get-operation-count (start-date &optional (end-date start-date)))
(defun get-unit-count (&optional (start-date (ut)) (end-date start-date)) - (wsdl-soap-call "https://adwords.google.com:443/api/adwords/v2/InfoService?wsdl" + (wsdl-soap-call (wsdl-cache-get "https://adwords.google.com:443/api/adwords/v2/InfoService?wsdl") "getUnitCount" :input `("startDate" ,start-date "endDate" ,end-date) @@ -160,6 +168,16 @@ :envelope-attributes `(:|xmlns| ,+google-adwords-ns-uri+)) (values result headers)))
+(defun get-all-adwords-campaigns (client-email) + (wsdl-soap-call (wsdl-cache-get "https://adwords.google.com:443/api/adwords/v2/CampaignService?wsdl") + "getAllAdWordsCampaigns" + :input '("dummy" 1) + :headers `("email" ,*google-adwords-email* + "password" ,*google-adwords-password* + "useragent" ,*google-adwords-user-agent* + "token" ,*google-adwords-token* + "clientEmail" ,client-email))) + (defun get-campaign (id client-email) (multiple-value-bind (result headers) (soap-call (make-soap-end-point "https://adwords.google.com:443/api/adwords/v2/CampaignService") @@ -195,7 +213,7 @@
(defun estimate-keyword-list (keywords) "((<text> <type> <max-cpc>)*) where type is Broad|Phrase|Exact" - (wsdl-soap-call "https://adwords.google.com:443/api/adwords/v2/TrafficEstimatorService?wsdl" + (wsdl-soap-call (wsdl-cache-get "https://adwords.google.com:443/api/adwords/v2/TrafficEstimatorService?wsdl") "estimateKeywordList" :input (mapcar #'(lambda (keyword) (destructuring-bind (text type max-cpc)