Rubenwouters\CrmLauncher\ApiCalls\FetchTwitterContent::fetchDirectMessages PHP Method

fetchDirectMessages() public method

Fetch all direct (private) messages
public fetchDirectMessages ( integer $sinceId ) : array | Illuminate\View\View
$sinceId integer
return array | Illuminate\View\View
    public function fetchDirectMessages($sinceId)
    {
        $client = initTwitter();
        try {
            if ($sinceId != 0) {
                $response = $client->get('direct_messages.json?full_text=true&since_id=' . $sinceId);
            } else {
                $response = $client->get('direct_messages.json?count=1');
            }
            return json_decode($response->getBody(), true);
        } catch (\GuzzleHttp\Exception\ClientException $e) {
            getErrorMessage($e->getResponse()->getStatusCode());
            return back();
        }
    }

Usage Example

 /**
  * Gets all direct (private) messages on Twitter
  * @return void
  */
 public function collectDirectMessages()
 {
     $sinceId = latestDirect();
     $directs = $this->twitterContent->fetchDirectMessages($sinceId);
     foreach ($directs as $key => $direct) {
         $date = changeDateFormat($direct['created_at']);
         $message = new Message();
         if ($this->contact->where('twitter_id', $direct['sender']['id_str'])->exists()) {
             $contact = $this->contact->where('twitter_id', $direct['sender']['id_str'])->first();
             if (count($contact->cases)) {
                 $case = $contact->cases()->where('origin', 'Twitter direct')->orderBy('id', 'DESC')->first();
             } else {
                 $case = $this->case->createCase('twitter_direct', $direct, $contact);
             }
             $message->case_id = $case->id;
             $this->case->openCase($case);
         } else {
             $contact = $this->contact->createContact('twitter_direct', $direct);
             $case = $this->case->createCase('twitter_direct', $direct, $contact);
             $message->case_id = $case->id;
         }
         $message->contact_id = $contact->id;
         $message->direct_id = $direct['id_str'];
         $message->message = filterUrl($direct['text']);
         $message->post_date = $date;
         $message->save();
         $this->media->handleMedia($message->id, $direct, 'twitter');
         $this->updateCase($case->id, 'twitter', $direct['id_str']);
     }
 }