Skip to content
This repository has been archived by the owner on Jun 3, 2020. It is now read-only.

Commit

Permalink
translators
Browse files Browse the repository at this point in the history
  • Loading branch information
jaebradley committed Nov 13, 2016
1 parent c97a048 commit 22b1f7b
Show file tree
Hide file tree
Showing 3 changed files with 256 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,46 +12,42 @@ import Period from '../models/Period';
import Broadcast from '../models/Broadcast';
import BroadcastMedium from '../models/BroadcastMedium';

export default class GameScoreboardTranslator {
export default class ScoreboardGameTranslator {
static translate(data) {
if (!('sports_content' in data)) {
throw new ReferenceError('sports_content field missing');
}

if (!('game' in data.sports_content)) {
if (!('game' in data)) {
throw new ReferenceError('game field missing');
}

if (!('period_time' in data.sports_content.game)) {
if (!('period_time' in data.game)) {
throw new ReferenceError('period_time field missing');
}

if (!('broadcasters' in data.sports_content.game)) {
if (!('broadcasters' in data.game)) {
throw new ReferenceError('broadcasters field missing');
}

if (!('home' in data.sports_content.game)) {
if (!('home' in data.game)) {
throw new ReferenceError('home field missing');
}

if (!('visitor' in data.sports_content.game)) {
if (!('visitor' in data.game)) {
throw new ReferenceError('visitor field missing');
}

let gameData = data.sports_content.game;
let gameData = data.game;
let periodTime = gameData.period_time;
let broadcasters = gameData.broadcasters;
let homeData = gameData.home;
let awayData = gameData.visitor;

return new GameScoreboard(gameData.id,
GameScoreboardTranslator.getGameStatus(periodTime),
GameScoreboardTranslator.getStartTimestamp(gameData),
GameScoreboardTranslator.getLocation(gameData),
GameScoreboardTranslator.getPeriod(periodTime),
GameScoreboardTranslator.getBroadcasts(broadcasters),
GameScoreboardTranslator.getMatchup(homeData, awayData),
GameScoreboardTranslator.getScoring(homeData, awayData));
ScoreboardGamesTranslator.getGameStatus(periodTime),
ScoreboardGamesTranslator.getStartTimestamp(gameData),
ScoreboardGamesTranslator.getLocation(gameData),
ScoreboardGamesTranslator.getPeriod(periodTime),
ScoreboardGamesTranslator.getBroadcasts(broadcasters),
ScoreboardGamesTranslator.getMatchup(homeData, awayData),
ScoreboardGamesTranslator.getScoring(homeData, awayData));
}

static getGameStatus(periodTime) {
Expand Down Expand Up @@ -139,9 +135,9 @@ export default class GameScoreboardTranslator {
let radioBroadcasters = broadcasters.radio.broadcaster;
let tvBroadcasters = broadcasters.tv.broadcaster;

radioBroadcasters.map(broadcast => broadcasts.push(GameScoreboardTranslator.getBroadcast(broadcast, BroadcastMedium.RADIO)));
radioBroadcasters.map(broadcast => broadcasts.push(ScoreboardGamesTranslator.getBroadcast(broadcast, BroadcastMedium.RADIO)));

tvBroadcasters.map(broadcast => broadcasts.push(GameScoreboardTranslator.getBroadcast(broadcast, BroadcastMedium.TV)));
tvBroadcasters.map(broadcast => broadcasts.push(ScoreboardGamesTranslator.getBroadcast(broadcast, BroadcastMedium.TV)));

return List.of(broadcasts);
}
Expand All @@ -163,8 +159,8 @@ export default class GameScoreboardTranslator {
}

static getMatchup(homeData, awayData) {
return new Matchup(GameScoreboardTranslator.getTeam(homeData),
GameScoreboardTranslator.getTeam(awayData));
return new Matchup(ScoreboardGamesTranslator.getTeam(homeData),
ScoreboardGamesTranslator.getTeam(awayData));
}

static getTeam(team) {
Expand All @@ -188,8 +184,8 @@ export default class GameScoreboardTranslator {
}

static getScoring(homeData, awayData) {
return new GameScoring(GameScoreboardTranslator.getPeriodScores(homeData, awayData),
GameScoreboardTranslator.getTotalScore(homeData, awayData));
return new GameScoring(ScoreboardGamesTranslator.getPeriodScores(homeData, awayData),
ScoreboardGamesTranslator.getTotalScore(homeData, awayData));
}

static getPeriodScores(homeData, awayData) {
Expand Down Expand Up @@ -221,7 +217,7 @@ export default class GameScoreboardTranslator {
for (let index = 0; index < homePeriodScores.length; index++) {
let homePeriodScore = homePeriodScores[length];
let awayPeriodScore = awayPeriodScores[length];
periodScores.push(GameScoreboardTranslator.getPeriodScore(homePeriodScore, awayPeriodScore));
periodScores.push(ScoreboardGamesTranslator.getPeriodScore(homePeriodScore, awayPeriodScore));
}

return List.of(periodScores);
Expand Down Expand Up @@ -264,8 +260,4 @@ export default class GameScoreboardTranslator {
return new Score(parseInt(homeData.score),
parseInt(awayData.score));
}

static getPeriodScores(homeData, awayData) {

}
}
27 changes: 27 additions & 0 deletions src/data/translators/ScoreboardGamesTranslator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use es6';

import {List} from 'immutable';
import moment from 'moment-timezone';
import jstz from 'jstimezonedetect';

import ScoreboardGameTranslator from './ScoreboardGameTranslator';

export default class ScoreboardGamesTranslator {
static translate(data) {
if (!('sports_content' in data)) {
throw new ReferenceError('sports content field missing');
}

if (!('games' in data.sports_content)) {
throw new ReferenceError('games field missing');
}

let games = data.sports_content.games;

let translatedGames = [];

games.map(game => translatedGames.push(ScoreboardGameTranslator.translate(games)));

return List.of(translatedGames);
}
}
208 changes: 208 additions & 0 deletions test/data/boxscore/ATLCLE.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
{
"sports_content": {
"sports_meta": {
"date_time": "20160930 1444",
"season_meta": {
"calendar_date": "20160930",
"season_year": "2016",
"stats_season_year": "2016",
"stats_season_id": "42015",
"stats_season_stage": "4",
"roster_season_year": "2016",
"schedule_season_year": "2016",
"standings_season_year": "2016",
"season_id": "12016",
"display_year": "2016-17",
"display_season": "Pre Season",
"season_stage": "1"
},
"next": {
"url": "http://data.nba.com/data/5s/json/cms/noseason/scoreboard/20160504/games.json"
}
},
"games": {
"game": [
{
"id": "0041500202",
"game_url": "20160504/ATLCLE",
"season_id": "42015",
"date": "20160504",
"time": "2000",
"arena": "Quicken Loans Arena",
"city": "Cleveland",
"state": "OH",
"country": "",
"home_start_date": "20160504",
"home_start_time": "2000",
"visitor_start_date": "20160504",
"visitor_start_time": "2000",
"previewAvailable": "1",
"recapAvailable": "1",
"notebookAvailable": "0",
"tnt_ot": "0",
"buzzerBeater": "0",
"ticket": {
"ticket_link": "https://www.flashseats.com/default.aspx?pid=19&eo=1&ss=0&eod=s&fss=660140133"
},
"period_time": {
"period_value": "4",
"period_status": "Final",
"game_status": "3",
"game_clock": "",
"total_periods": "4",
"period_name": "Qtr"
},
"lp": {
"lp_video": "false",
"condensed_bb": "false",
"visitor": {
"audio": {
"ENG": "false",
"SPA": "false"
},
"video": {
"avl": "false",
"onAir": "false",
"archBB": "false"
}
},
"home": {
"audio": {
"ENG": "false",
"SPA": "false"
},
"video": {
"avl": "false",
"onAir": "false",
"archBB": "false"
}
}
},
"dl": {
"link": [
{
"name": "TNT",
"long_nm": "",
"code": "tnt",
"url": "http://www.tntdrama.com/watchtnt/",
"mobile_url": "",
"home_visitor": "natl"
}
]
},
"broadcasters": {
"radio": {
"broadcaster": [
{
"scope": "local",
"home_visitor": "visitor",
"display_name": "92.9 FM \"The Game\""
},
{
"scope": "local",
"home_visitor": "home",
"display_name": "WTAM 1100 / 87.7 FM (ESP)"
}
]
},
"tv": {
"broadcaster": [
{
"scope": "natl",
"home_visitor": "natl",
"display_name": "TNT"
},
{
"scope": "can",
"home_visitor": "can",
"display_name": "TSN3/4/5"
}
]
}
},
"playoffs": {
"round": "",
"conference": "",
"series": "",
"gameId": "0041500202",
"gameStatus": "1",
"game_number": "2",
"game_necessary_flag": "0",
"home_seed": "",
"visitor_seed": "",
"home_wins": "0",
"visitor_wins": "0"
},
"visitor": {
"id": "1610612737",
"team_key": "ATL",
"city": "Atlanta",
"abbreviation": "ATL",
"nickname": "Hawks",
"url_name": "hawks",
"team_code": "hawks",
"score": "98",
"linescores": {
"period": [
{
"period_value": "1",
"period_name": "Q1",
"score": "20"
},
{
"period_value": "2",
"period_name": "Q2",
"score": "18"
},
{
"period_value": "3",
"period_name": "Q3",
"score": "32"
},
{
"period_value": "4",
"period_name": "Q4",
"score": "28"
}
]
}
},
"home": {
"id": "1610612739",
"team_key": "CLE",
"city": "Cleveland",
"abbreviation": "CLE",
"nickname": "Cavaliers",
"url_name": "cavaliers",
"team_code": "cavaliers",
"score": "123",
"linescores": {
"period": [
{
"period_value": "1",
"period_name": "Q1",
"score": "35"
},
{
"period_value": "2",
"period_name": "Q2",
"score": "39"
},
{
"period_value": "3",
"period_name": "Q3",
"score": "32"
},
{
"period_value": "4",
"period_name": "Q4",
"score": "17"
}
]
}
}
}
]
}
}
}

0 comments on commit 22b1f7b

Please sign in to comment.