mirror of
https://github.com/SophiaAtkinson/steamwidgets-web.git
synced 2025-06-27 10:17:41 -07:00
#1 API query
This commit is contained in:
@ -21,6 +21,7 @@ return [
|
|||||||
array('/api/query/server', 'GET', 'api@queryServerInfo'),
|
array('/api/query/server', 'GET', 'api@queryServerInfo'),
|
||||||
array('/api/query/user', 'GET', 'api@queryUserInfo'),
|
array('/api/query/user', 'GET', 'api@queryUserInfo'),
|
||||||
array('/api/query/workshop', 'GET', 'api@queryWorkshopInfo'),
|
array('/api/query/workshop', 'GET', 'api@queryWorkshopInfo'),
|
||||||
|
array('/api/query/group', 'GET', 'api@queryGroupInfo'),
|
||||||
array('/api/resource/query', 'GET', 'api@queryResource'),
|
array('/api/resource/query', 'GET', 'api@queryResource'),
|
||||||
array('/stats/{pw}', 'GET', 'stats@index'),
|
array('/stats/{pw}', 'GET', 'stats@index'),
|
||||||
array('/stats/query/{pw}', 'ANY', 'stats@query'),
|
array('/stats/query/{pw}', 'ANY', 'stats@query'),
|
||||||
|
@ -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
|
* Query JavaScript or CSS resource for component
|
||||||
*
|
*
|
||||||
|
@ -11,6 +11,7 @@ class HitsModel extends \Asatru\Database\Model
|
|||||||
const HITTYPE_MODULE_SERVER = 'mod_server';
|
const HITTYPE_MODULE_SERVER = 'mod_server';
|
||||||
const HITTYPE_MODULE_USER = 'mod_user';
|
const HITTYPE_MODULE_USER = 'mod_user';
|
||||||
const HITTYPE_MODULE_WORKSHOP = 'mod_workshop';
|
const HITTYPE_MODULE_WORKSHOP = 'mod_workshop';
|
||||||
|
const HITTYPE_MODULE_GROUP = 'mod_group';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate hit type
|
* Validate hit type
|
||||||
@ -22,7 +23,7 @@ class HitsModel extends \Asatru\Database\Model
|
|||||||
public static function validateHitType($type)
|
public static function validateHitType($type)
|
||||||
{
|
{
|
||||||
try {
|
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)) {
|
if (!in_array($type, $types)) {
|
||||||
throw new Exception('Invalid hit type: ' . $type);
|
throw new Exception('Invalid hit type: ' . $type);
|
||||||
|
50
app/modules/SteamGroup.php
Normal file
50
app/modules/SteamGroup.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class SteamGroup
|
||||||
|
*
|
||||||
|
* Responsible for querying Steam group data
|
||||||
|
*/
|
||||||
|
class SteamGroup
|
||||||
|
{
|
||||||
|
const STEAM_ENDPOINT_ID = 'https://steamcommunity.com/gid/UNIQUE_GROUP_ID64/memberslistxml/?xml=1';
|
||||||
|
const STEAM_ENDPOINT_NAME = 'https://steamcommunity.com/groups/UNIQUE_GROUP_NAME/memberslistxml/?xml=1';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query item data from Steam group
|
||||||
|
*
|
||||||
|
* @param $group
|
||||||
|
* @return mixed
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public static function querySteamData($group)
|
||||||
|
{
|
||||||
|
$url = '';
|
||||||
|
|
||||||
|
if (is_numeric($group)) {
|
||||||
|
$url = str_replace('UNIQUE_GROUP_ID64', $group, self::STEAM_ENDPOINT_ID);
|
||||||
|
} else {
|
||||||
|
$url = str_replace('UNIQUE_GROUP_NAME', $group, self::STEAM_ENDPOINT_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
$content = simplexml_load_file($url);
|
||||||
|
if ($content !== false) {
|
||||||
|
$result = new \stdClass();
|
||||||
|
$result->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;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user