JD2022-TU1/data/EngineData/JustDanceTools/app/shotgun/index.coffee

138 lines
4.1 KiB
CoffeeScript

xmlrpc = require 'xmlrpc'
httpproxyagent = require 'https-proxy-agent'
_ = require 'underscore'
class Shotgun
ENTITIES:
asset: "Asset"
batch: "CustomEntity03"
jd_opus: "CustomEntity02"
jd_tv: "CustomEntity05"
map: "CustomEntity28"
task: "Task"
version: "Version"
search_tags: "CustomEntity09"
FIELDS:
assets_jd_opus: "sg_map_.CustomEntity28.custom_entity02_sg_maps_custom_entity02s"
asset_latest_version: "sg_latest_asset"
asset_maps: "sg_map_"
asset_type: "sg_asset_type"
batch_end_date: "sg_end_date"
batch_number: "sg_batch_number"
batch_start_date: "sg_start_date"
date_created: "created_at"
date_updated: "updated_at"
description: "description"
jd_tv_jd_opus: "sg_jdopus"
map_assets: "sg_assets_2"
map_batch: "sg_batch00"
map_game_mode: "sg_game_mode"
map_jdm_attributes: "sg_tags_jdm"
map_jd_opus: "custom_entity02_sg_maps_custom_entity02s"
map_list: "sg_maps"
map_production_studio: "sg_production_studio"
map_status: "sg_map_status"
map_type: "sg_map_type"
name: "code"
nas_folder: "sg_nas_folder"
task: "sg_task"
task_template: "task_template"
thumbnail: "image"
version_link: "entity"
version_uploaded_movie: "sg_uploaded_movie"
version_status: "sg_status_list"
search_labels: "sg_search_labels"
search_tag_loc_id: "sg_loc_id"
search_labels_maps: "custom_entity28_sg_search_labels_custom_entity28s"
constructor: ( ) ->
proxyagent = new httpproxyagent 'http://pun-net-bcproxy.ubisoft.org:3128'
@client = xmlrpc.createSecureClient {
url: 'http://justdance.shotgunstudio.com/api3'
agent: proxyagent
}
getAuthObject: ( ) ->
{
script_name: 'shotgate'
script_key: 'ce5ad5fb39b240cedc4d2eabafbb6869077fe1dcb562045698e9654b6c1f2752'
}
getDefaultFilter: ( ) ->
[{
values: [
{
type: 'Project'
id: 67
}
]
path: 'project'
relation: 'is'
}]
getDefaultParamsObject: ( ) ->
{
return_paging_info: true
return_fields: ['id', 'content', 'code', 'sg_nas_folder']
return_only: 'active'
api_return_image_urls: true
paging:
current_page: 1
entities_per_page: 500
filters: []
type: ''
}
generateFilterObject: ( filters ) ->
defaults = {
conditions:[]
logical_operator: 'and'
}
defaults.conditions = _.union filters, @getDefaultFilter()
defaults
composeQuery: ( entity, filters = [], return_fields = [] ) ->
result = []
params = @getDefaultParamsObject()
params.filters = @generateFilterObject(filters)
auth = @getAuthObject()
params.type = entity
params.return_fields = _.union params.return_fields, return_fields
result.push auth, params
result
getProjects: ( ) ->
new Promise ( resolve, reject ) =>
params = @composeQuery(@ENTITIES.jd_opus, [], [@FIELDS.name, @FIELDS.map_assets])
@client.methodCall 'read', params, ( err, value, body ) ->
if err?
reject(err)
else
resolve(value.results.entities)
getMaps: ( projectCode ) ->
new Promise ( resolve, reject ) =>
params = @composeQuery(@ENTITIES.map, [{
values: [projectCode]
path: @FIELDS.map_jd_opus
relation: 'name_is'
}], [@FIELDS.map_assets])
@client.methodCall 'read', params, ( err, value, body ) ->
if err?
reject(err)
else
resolve(value.results.entities)
module.exports = Shotgun