diff --git a/app/config/routes.php b/app/config/routes.php index cc5bc98..08aafe6 100644 --- a/app/config/routes.php +++ b/app/config/routes.php @@ -21,6 +21,7 @@ return [ array('/api/query/server', 'GET', 'api@queryServerInfo'), array('/api/query/user', 'GET', 'api@queryUserInfo'), array('/api/query/workshop', 'GET', 'api@queryWorkshopInfo'), + array('/api/query/group', 'GET', 'api@queryGroupInfo'), array('/api/resource/query', 'GET', 'api@queryResource'), array('/stats/{pw}', 'GET', 'stats@index'), array('/stats/query/{pw}', 'ANY', 'stats@query'), diff --git a/app/controller/api.php b/app/controller/api.php index 872c476..acc5360 100644 --- a/app/controller/api.php +++ b/app/controller/api.php @@ -103,6 +103,28 @@ class ApiController extends BaseController { } } + /** + * Query Steam group data + * + * @param Asatru\Controller\ControllerArg $request + * @return Asatru\View\JsonHandler + */ + public function queryGroupInfo($request) + { + try { + $group = $request->params()->query('group', null); + + $data = SteamGroup::querySteamData($group); + + //Save hit + HitsModel::addHit(HitsModel::HITTYPE_MODULE_GROUP); + + return json(array('code' => 200, 'group' => $group, 'data' => $data)); + } catch (\Exception $e) { + return json(array('code' => 500, 'msg' => $e->getMessage())); + } + } + /** * Query JavaScript or CSS resource for component * diff --git a/app/models/HitsModel.php b/app/models/HitsModel.php index ed981d1..00e2cc0 100644 --- a/app/models/HitsModel.php +++ b/app/models/HitsModel.php @@ -11,6 +11,7 @@ class HitsModel extends \Asatru\Database\Model const HITTYPE_MODULE_SERVER = 'mod_server'; const HITTYPE_MODULE_USER = 'mod_user'; const HITTYPE_MODULE_WORKSHOP = 'mod_workshop'; + const HITTYPE_MODULE_GROUP = 'mod_group'; /** * Validate hit type @@ -22,7 +23,7 @@ class HitsModel extends \Asatru\Database\Model public static function validateHitType($type) { try { - $types = [self::HITTYPE_MODULE_APP, self::HITTYPE_MODULE_SERVER, self::HITTYPE_MODULE_USER, self::HITTYPE_MODULE_WORKSHOP]; + $types = [self::HITTYPE_MODULE_APP, self::HITTYPE_MODULE_SERVER, self::HITTYPE_MODULE_USER, self::HITTYPE_MODULE_WORKSHOP, self::HITTYPE_MODULE_GROUP]; if (!in_array($type, $types)) { throw new Exception('Invalid hit type: ' . $type); diff --git a/app/modules/SteamGroup.php b/app/modules/SteamGroup.php new file mode 100644 index 0000000..58788b3 --- /dev/null +++ b/app/modules/SteamGroup.php @@ -0,0 +1,50 @@ +groupID64 = intval($content->groupID64->__toString()); + $result->groupName = $content->groupDetails->groupName->__toString(); + $result->groupURL = $content->groupDetails->groupURL->__toString(); + $result->groupHeadline = $content->groupDetails->headline->__toString(); + $result->groupSummary = $content->groupDetails->summary->__toString(); + $result->groupAvatar = $content->groupDetails->avatarFull->__toString(); + $result->members = new \stdClass(); + $result->members->count = intval($content->groupDetails->memberCount->__toString()); + $result->members->in_chat = intval($content->groupDetails->membersInChat->__toString()); + $result->members->in_game = intval($content->groupDetails->membersInGame->__toString()); + $result->members->online = intval($content->groupDetails->membersOnline->__toString()); + + return $result; + } + + return null; + } +}