public function categories() { if (Cache::has('mailchimp_categories')) { return JsonResponse::create(Cache::get('mailchimp_categories')); } $MailChimp = new MailChimp($this->api_key); $result = $MailChimp->get('lists/' . $this->list_key . '/interest-categories'); $lists = []; foreach ($result['categories'] as $category) { $category_dto = ['id' => $category['id'], 'title' => $category['title'], 'interests' => []]; $interests = $MailChimp->request('lists/' . $this->list_key . '/interest-categories/' . $category['id'] . '/interests'); foreach ($interests['interests'] as $interest) { $int_dto = ['id' => $interest['id'], 'name' => $interest['name']]; $category_dto['interests'][] = $int_dto; } $lists[] = $category_dto; } Cache::forever('mailchimp_categories', $lists); return JsonResponse::create($lists); }