parent
							
								
									80589ba76a
								
							
						
					
					
						commit
						3db46f2d25
					
				
				 6 changed files with 174 additions and 95 deletions
			
			
		| 
		 After Width: | Height: | Size: 143 KiB  | 
@ -0,0 +1,102 @@ | 
				
			||||
'use strict'; | 
				
			||||
import { SpaceTraders } from "./config.js" | 
				
			||||
 | 
				
			||||
export class Agent { | 
				
			||||
  constructor(agent, token = "") { | 
				
			||||
    this.token = token; | 
				
			||||
    this.name = agent.symbol; | 
				
			||||
    this.credits = agent.credits; | 
				
			||||
    this.faction = agent.startingFaction; | 
				
			||||
    this.hq = agent.headquarters; | 
				
			||||
    this.shipsCpt = agent.shipCount;   
 | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  get_agent_system() { | 
				
			||||
    let metaSystem = this.hq.split("-"); | 
				
			||||
    return metaSystem[0] + "-" + metaSystem[1]; 
 | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
export class AgentBuilder { | 
				
			||||
  static async create(symbol, faction, callback, email = "") { | 
				
			||||
      const url = `${SpaceTraders.host}register`; | 
				
			||||
      await $.ajax({ | 
				
			||||
        url: url, | 
				
			||||
        method: "POST", | 
				
			||||
        headers: { "Content-Type": "application/json" }, | 
				
			||||
        processData: false, | 
				
			||||
        data: `{\n  "faction": "${faction}",\n  "symbol": "${symbol}",\n  "email": "${email}"\n}`, | 
				
			||||
        success: (reponse) => { | 
				
			||||
          let agent = new Agent(reponse.data.agent, reponse.data.token) | 
				
			||||
          callback(agent); | 
				
			||||
        }, | 
				
			||||
      }); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  static async get(token, callback){ | 
				
			||||
    const url = `${SpaceTraders.host}my/agent`; | 
				
			||||
    await $.ajax({ | 
				
			||||
        url: url, | 
				
			||||
        method: "GET", | 
				
			||||
        headers: { | 
				
			||||
          Accept: "application/json", | 
				
			||||
          Authorization: `Bearer ${token}`, | 
				
			||||
        }, | 
				
			||||
        success: (reponse) => { | 
				
			||||
          let agent = new Agent(reponse.data, token); | 
				
			||||
          callback(agent); | 
				
			||||
        }, | 
				
			||||
    }); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  static async get_public(symbol, callback) { | 
				
			||||
    const url = `${SpaceTraders.host}agents/${symbol}`; | 
				
			||||
    const headers = { Accept: "application/json" }; | 
				
			||||
    await $.ajax({ | 
				
			||||
      url: url, | 
				
			||||
      method: "GET", | 
				
			||||
      headers: headers, | 
				
			||||
      success: (reponse) => { | 
				
			||||
        let agent = new Agent(reponse.data); | 
				
			||||
        callback(agent); | 
				
			||||
      }, | 
				
			||||
    }); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  static async list(limit, page, callback, agents = []) { | 
				
			||||
    const url = `${SpaceTraders.host}agents`; | 
				
			||||
    const headers = { Accept: "application/json" }; | 
				
			||||
    const data = { limit, page }; | 
				
			||||
    await $.ajax({ | 
				
			||||
      url: url, | 
				
			||||
      method: "GET", | 
				
			||||
      headers: headers, | 
				
			||||
      data: data, | 
				
			||||
      success: (reponse) => { | 
				
			||||
        reponse.data.forEach(agent => { | 
				
			||||
          agents.push(agent); | 
				
			||||
        }); | 
				
			||||
        callback(agents, reponse.meta); | 
				
			||||
      }, | 
				
			||||
    }); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  static async list_all(callback) { | 
				
			||||
    await this.list(1,1, (agents, meta) => { | 
				
			||||
      let maxPage = meta.total / 20; | 
				
			||||
      this.r_listing(1, maxPage, [], callback); | 
				
			||||
    }); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  static async r_listing(page, maxPage, agents, callback) { | 
				
			||||
    if (page < maxPage) { | 
				
			||||
      this.list(20, page++,() => { | 
				
			||||
        setTimeout(() => { | 
				
			||||
          this.r_listing(page++, maxPage, agents, callback); 
 | 
				
			||||
        }, 1000); | 
				
			||||
      }, agents); | 
				
			||||
    } else { | 
				
			||||
      callback(agents); | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,3 @@ | 
				
			||||
export const SpaceTraders = { | 
				
			||||
        host: "https://api.spacetraders.io/v2/" | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in New Issue