diff --git a/bridges/ArtStationBridge.php b/bridges/ArtStationBridge.php new file mode 100644 index 00000000..9c12add5 --- /dev/null +++ b/bridges/ArtStationBridge.php @@ -0,0 +1,93 @@ + array( + 'q' => array( + 'name' => 'Search term', + 'required' => true + ) + ) + ); + + public function getIcon() { + return 'https://www.artstation.com/assets/favicon-58653022bc38c1905ac7aa1b10bffa6b.ico'; + } + + public function getName() { + return self::NAME . ': ' . $this->getInput('q'); + } + + private function fetchSearch($searchQuery) { + $data = '{"query":"' . $searchQuery . '","page":1,"per_page":50,"sorting":"date",'; + $data .= '"pro_first":"1","filters":[],"additional_fields":[]}'; + + $header = array( + 'Content-Type: application/json', + 'Accept: application/json' + ); + + $opts = array( + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => $data, + CURLOPT_RETURNTRANSFER => true + ); + + $jsonSearchURL = self::URI . '/api/v2/search/projects.json'; + $jsonSearchStr = getContents($jsonSearchURL, $header, $opts) + or returnServerError('Could not fetch JSON for search query.'); + return json_decode($jsonSearchStr); + } + + private function fetchProject($hashID) { + $jsonProjectURL = self::URI . '/projects/' . $hashID . '.json'; + $jsonProjectStr = getContents($jsonProjectURL) + or returnServerError('Could not fetch JSON for project.'); + return json_decode($jsonProjectStr); + } + + public function collectData() { + $searchTerm = $this->getInput('q'); + $jsonQuery = $this->fetchSearch($searchTerm); + + foreach($jsonQuery->data as $media) { + // get detailed info about media item + $jsonProject = $this->fetchProject($media->hash_id); + + // create item + $item = array(); + $item['title'] = $media->title; + $item['uri'] = $media->url; + $item['timestamp'] = strtotime($jsonProject->published_at); + $item['author'] = $media->user->full_name; + $item['categories'] = implode(',', $jsonProject->tags); + + $item['content'] = '

' + . $jsonProject->description + . '

'; + + $numAssets = count($jsonProject->assets); + + if ($numAssets > 1) + $item['content'] .= '

Project contains ' + . ($numAssets - 1) + . ' more item(s).

'; + + $this->items[] = $item; + + if (count($this->items) >= 10) + break; + } + } +}