mgsmus
Hocam şu şekilde bir şey düşündüm aslında :
$serviceCargo = null;
$database = "mysql";
$serviceOptions["data"] = json_decode($this->option("request"));
$commandError = false;
$commandMessage = "";
switch ($this->argument("cargoFirm")) {
case "DHL":
{
switch ($this->option("dataType")) {
case "PostalLocation":
{
$serviceCargo = new PostalLocation();
break;
}
default:
{
$commandError = true;
$commandMessage = "Data tip hatalı.";
break;
}
}
break;
}
default:
{
$commandError = true;
$commandMessage = "Kargo firması geçersiz!";
break;
}
}
/*
|--------------------------------------------------------------------------
Run The Service
|--------------------------------------------------------------------------
*/
if ($commandError || empty($serviceCargo)) {
if (!empty($this->option("requestViaUrl"))) {
echo "<div style='
background-color: black;
color: #f44336;
font-size: larger;
padding: 0 20px 10px;'>" . "
İşlem başarısız! " . $commandMessage . "</div>";
} else {
echo "\033[31m İşlem başarısız! " . $commandMessage . "\033[0m\n";
}
} else {
/*
|--------------------------------------------------------------------------
Service Start
|--------------------------------------------------------------------------
*/
$data = $serviceCargo->runTheService($database, $serviceOptions);
switch ($this->option("returnType")) {
case "JSON":
{
return response()->json($data);
}
}
}
public function runTheService($database, $serviceOptions): array
{
foreach ($serviceOptions["data"] as $key => $serviceData) {
$this->optionsExtra[$key] = $serviceData;
}
$curlService = new CurlService();
$curl_list_postLoc = $curlService->to("https://dct.dhl.com/data/postLoc",
mustCreateBuilderClass: true)
->withData([
"cntryCd" => $this->optionsExtra["cntryCd"],
"postcdStart" => $this->optionsExtra["postcdStart"] ?? ""
])
->asJsonRequest()
->returnResponseObject()
->get();
$response = json_decode(json_encode(simplexml_load_string($curl_list_postLoc->content)));
if ($curl_list_postLoc->status == 200 && (int)$response->count > 0) {
if (isset($response->postalLocationList->postalLocation->postalLocation) && !empty($response->postalLocationList->postalLocation->postalLocation)) {
foreach ($response->postalLocationList->postalLocation->postalLocation as $postalLocation) {
$this->result[] = [
"id" => $postalLocation->postcode,
"text" => $postalLocation->cityName
];
}
}
}
return [
"result" => $this->result,
"error" => $this->errorStatus,
"errorMessage" => $this->errorMessage
];
}
Sonrasında bir tane ServiceController yazıp dışarıdan bu istekleri alıp ,
Artisan::call('service:Cargo', [
'cargoFirm' => "DHL",
'--requestViaUrl' => 1,
'-D' => "PostalLocation",
'-R' => json_encode(["cntryCd" => "TR", "postcdStart" => "14"])
]);
şeklinde dönmek istiyorum.
Zaten komut satırından dönmediğimde de şu şekilde uyarı alıyorum.
Object of class Illuminate\Http\JsonResponse could not be converted to int
Önceden direk Controller içerisine istek atıp işlemleri halledip dönüyordum. Bunu komut satırı ile ilişkilendirebilir miyim acaba diye düşünüyorum. Yanlış , gereksiz mi acaba ?