PureBasic
PureBasic
Shippo Validate Existing Address
See more Shippo Examples
Demonstrates how to validate an existing address.Chilkat PureBasic Downloads
IncludeFile "CkHttp.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
; This example assumes the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
http.i = CkHttp::ckCreate()
If http.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Implements the following CURL command:
; curl https://api.goshippo.com/addresses/e9dabe9669334b84baad3a08646b2202/validate/ \
; -H "Authorization: ShippoToken <API_TOKEN>"
CkHttp::ckSetRequestHeader(http,"Authorization","ShippoToken <API_TOKEN>")
sbResponseBody.i = CkStringBuilder::ckCreate()
If sbResponseBody.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkHttp::ckQuickGetSb(http,"https://api.goshippo.com/addresses/e9dabe9669334b84baad3a08646b2202/validate/",sbResponseBody)
If success = 0
Debug CkHttp::ckLastErrorText(http)
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sbResponseBody)
ProcedureReturn
EndIf
jResp.i = CkJsonObject::ckCreate()
If jResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckLoadSb(jResp,sbResponseBody)
CkJsonObject::setCkEmitCompact(jResp, 0)
Debug "Response Body:"
Debug CkJsonObject::ckEmit(jResp)
respStatusCode.i = CkHttp::ckLastStatus(http)
Debug "Response Status Code = " + Str(respStatusCode)
If respStatusCode >= 400
Debug "Response Header:"
Debug CkHttp::ckLastHeader(http)
Debug "Failed."
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndIf
; Sample JSON response:
; (Sample code for parsing the JSON response is shown below)
; {
; "object_created": "2015-03-30T23:47:11.574Z",
; "object_updated": "2015-03-30T23:47:11.596Z",
; "object_id": "67183b2e81e9421f894bfbcdc4236b16",
; "is_complete": false,
; "validation_results": {
; "is_valid": false,
; "messages": [
; {
; "source": "USPS",
; "code": "Address Not Found",
; "type": "address_error",
; "text": "The address as submitted could not be found. Please check for excessive abbreviations in the street address line or in the City name."
; }
; ]
; },
; "object_owner": "shippotle@goshippo.com",
; "name": "Shawn Ippotle",
; "company": "Shippo",
; "street_no": "",
; "street1": "215 HIPPO ST.",
; "street2": "",
; "city": "SAN FRANCISCO",
; "state": "CA",
; "zip": "94107",
; "country": "US",
; "phone": ""
; }
; Sample code for parsing the JSON response...
; Use the following online tool to generate parsing code from sample JSON:
; Generate Parsing Code from JSON
source.s
code.s
v_type.s
text.s
object_created.s = CkJsonObject::ckStringOf(jResp,"object_created")
object_updated.s = CkJsonObject::ckStringOf(jResp,"object_updated")
object_id.s = CkJsonObject::ckStringOf(jResp,"object_id")
is_complete.i = CkJsonObject::ckBoolOf(jResp,"is_complete")
validation_resultsIs_valid.i = CkJsonObject::ckBoolOf(jResp,"validation_results.is_valid")
object_owner.s = CkJsonObject::ckStringOf(jResp,"object_owner")
name.s = CkJsonObject::ckStringOf(jResp,"name")
company.s = CkJsonObject::ckStringOf(jResp,"company")
street_no.s = CkJsonObject::ckStringOf(jResp,"street_no")
street1.s = CkJsonObject::ckStringOf(jResp,"street1")
street2.s = CkJsonObject::ckStringOf(jResp,"street2")
city.s = CkJsonObject::ckStringOf(jResp,"city")
state.s = CkJsonObject::ckStringOf(jResp,"state")
zip.s = CkJsonObject::ckStringOf(jResp,"zip")
country.s = CkJsonObject::ckStringOf(jResp,"country")
phone.s = CkJsonObject::ckStringOf(jResp,"phone")
i.i = 0
count_i.i = CkJsonObject::ckSizeOfArray(jResp,"validation_results.messages")
While i < count_i
CkJsonObject::setCkI(jResp, i)
source = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].source")
code = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].code")
v_type = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].type")
text = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].text")
i = i + 1
Wend
CkHttp::ckDispose(http)
CkStringBuilder::ckDispose(sbResponseBody)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndProcedure