Skip to content

Commit

Permalink
Merge branch 'release/42.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
alaingilbert committed Jan 31, 2021
2 parents 65a2495 + fa72b3d commit 4881d2a
Show file tree
Hide file tree
Showing 20 changed files with 528 additions and 104 deletions.
8 changes: 8 additions & 0 deletions cmd/ogamed/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,13 @@ func start(c *cli.Context) error {
e.Debug = false
e.GET("/", ogame.HomeHandler)
e.GET("/tasks", ogame.TasksHandler)

// CAPTCHA Handler
e.GET("/bot/captcha", ogame.GetCaptchaHandler)
e.GET("/bot/captcha/icons/:challengeID", ogame.GetCaptchaImgHandler)
e.GET("/bot/captcha/question/:challengeID", ogame.GetCaptchaTextHandler)
e.POST("/bot/captcha/solve", ogame.GetCaptchaSolverHandler)

e.GET("/bot/server", ogame.GetServerHandler)
e.POST("/bot/set-user-agent", ogame.SetUserAgentHandler)
e.GET("/bot/server-url", ogame.ServerURLHandler)
Expand Down Expand Up @@ -294,6 +301,7 @@ func start(c *cli.Context) error {
e.POST("/bot/planets/:planetID/send-ipm", ogame.SendIPMHandler)
e.GET("/bot/moons/:moonID/phalanx/:galaxy/:system/:position", ogame.PhalanxHandler)
e.POST("/bot/moons/:moonID/jump-gate", ogame.JumpGateHandler)
e.GET("/bot/techs", ogame.TechsHandler)
e.GET("/game/allianceInfo.php", ogame.GetAlliancePageContentHandler) // Example: //game/allianceInfo.php?allianceId=500127

// Get/Post Page Content
Expand Down
12 changes: 12 additions & 0 deletions constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,18 @@ func (d CelestialType) Int() int64 {
// CharacterClass ...
type CharacterClass int64

func (c CharacterClass) IsCollector() bool {
return c == Collector
}

func (c CharacterClass) IsGeneral() bool {
return c == General
}

func (c CharacterClass) IsDiscoverer() bool {
return c == Discoverer
}

// OGame constants
const (
NoClass CharacterClass = 0
Expand Down
21 changes: 21 additions & 0 deletions constants_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,24 @@ func TestConstants_CelestialType_Int64(t *testing.T) {
func TestConstants_CelestialType_Int(t *testing.T) {
assert.Equal(t, int64(1), PlanetType.Int())
}

func TestCharacterClass_isCollector(t *testing.T) {
assert.Equal(t, false, NoClass.IsCollector())
assert.Equal(t, true, Collector.IsCollector())
assert.Equal(t, false, General.IsCollector())
assert.Equal(t, false, Discoverer.IsCollector())
}

func TestCharacterClass_isGeneral(t *testing.T) {
assert.Equal(t, false, NoClass.IsGeneral())
assert.Equal(t, false, Collector.IsGeneral())
assert.Equal(t, true, General.IsGeneral())
assert.Equal(t, false, Discoverer.IsGeneral())
}

func TestCharacterClass_isDiscoverer(t *testing.T) {
assert.Equal(t, false, NoClass.IsDiscoverer())
assert.Equal(t, false, Collector.IsDiscoverer())
assert.Equal(t, false, General.IsDiscoverer())
assert.Equal(t, true, Discoverer.IsDiscoverer())
}
5 changes: 5 additions & 0 deletions extractor_v6.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ func NewExtractorV6() *ExtractorV6 {
return &ExtractorV6{}
}

// ExtractTechs ...
func (e ExtractorV6) ExtractTechs(pageHTML []byte) (ResourcesBuildings, Facilities, ShipsInfos, Researches, error) {
panic("implement me")
}

// ExtractDestroyRockets ...
func (e ExtractorV6) ExtractDestroyRockets(pageHTML []byte) (abm, ipm int64, token string, err error) {
panic("implement me")
Expand Down
5 changes: 5 additions & 0 deletions extractor_v71.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ func (e ExtractorV71) ExtractResourcesDetails(pageHTML []byte) (out ResourcesDet
return extractResourcesDetailsV71(pageHTML)
}

// ExtractTechs ...
func (e ExtractorV71) ExtractTechs(pageHTML []byte) (ResourcesBuildings, Facilities, ShipsInfos, Researches, error) {
return extractTechsV71(pageHTML)
}

// ExtractEspionageReport ...
func (e ExtractorV71) ExtractEspionageReport(pageHTML []byte, location *time.Location) (EspionageReport, error) {
doc, _ := goquery.NewDocumentFromReader(bytes.NewReader(pageHTML))
Expand Down
3 changes: 2 additions & 1 deletion extracts_v6.go
Original file line number Diff line number Diff line change
Expand Up @@ -1735,7 +1735,7 @@ func extractGalaxyInfosV6(pageHTML []byte, botPlayerName string, botPlayerID, bo
planetInfos.Name = planetName
planetInfos.Img = planetImg
planetInfos.Inactive = strings.Contains(classes, "inactive_filter")
planetInfos.StrongPlayer = strings.Contains(classes, "strong_filter")
planetInfos.StrongPlayer = s.Find("span.status_abbr_strong").Size() > 0
planetInfos.Newbie = strings.Contains(classes, "newbie_filter")
planetInfos.Vacation = strings.Contains(classes, "vacation_filter")
planetInfos.HonorableTarget = s.Find("span.status_abbr_honorableTarget").Size() > 0
Expand All @@ -1746,6 +1746,7 @@ func extractGalaxyInfosV6(pageHTML []byte, botPlayerName string, botPlayerID, bo
planetInfos.Player.IsStarlord = tdPlayername.HasClass("rank_starlord1") || tdPlayername.HasClass("rank_starlord2") || tdPlayername.HasClass("rank_starlord3")
planetInfos.Coordinate = extractCoordV6(coordsRaw)
planetInfos.Coordinate.Type = PlanetType
planetInfos.Date = time.Now()

var playerID int64
var playerName string
Expand Down
135 changes: 135 additions & 0 deletions extracts_v71.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,141 @@ func extractResourcesDetailsV71(pageHTML []byte) (out ResourcesDetails, err erro
return
}

type planetTechsRespV71 struct {
Num1 int64 `json:"1"`
Num2 int64 `json:"2"`
Num3 int64 `json:"3"`
Num4 int64 `json:"4"`
Num12 int64 `json:"12"`
Num14 int64 `json:"14"`
Num15 int64 `json:"15"`
Num21 int64 `json:"21"`
Num22 int64 `json:"22"`
Num23 int64 `json:"23"`
Num24 int64 `json:"24"`
Num31 int64 `json:"31"`
Num33 int64 `json:"33"`
Num34 int64 `json:"34"`
Num36 int64 `json:"36"`
Num41 int64 `json:"41"`
Num42 int64 `json:"42"`
Num43 int64 `json:"43"`
Num44 int64 `json:"44"`
Num106 int64 `json:"106"`
Num108 int64 `json:"108"`
Num109 int64 `json:"109"`
Num110 int64 `json:"110"`
Num111 int64 `json:"111"`
Num113 int64 `json:"113"`
Num114 int64 `json:"114"`
Num115 int64 `json:"115"`
Num117 int64 `json:"117"`
Num118 int64 `json:"118"`
Num120 int64 `json:"120"`
Num121 int64 `json:"121"`
Num122 int64 `json:"122"`
Num123 int64 `json:"123"`
Num124 int64 `json:"124"`
Num199 int64 `json:"199"`
Num202 int64 `json:"202"`
Num203 int64 `json:"203"`
Num204 int64 `json:"204"`
Num205 int64 `json:"205"`
Num206 int64 `json:"206"`
Num207 int64 `json:"207"`
Num208 int64 `json:"208"`
Num209 int64 `json:"209"`
Num210 int64 `json:"210"`
Num211 int64 `json:"211"`
Num212 int64 `json:"212"`
Num213 int64 `json:"213"`
Num214 int64 `json:"214"`
Num215 int64 `json:"215"`
Num217 int64 `json:"217"`
Num218 int64 `json:"218"`
Num219 int64 `json:"219"`
Num401 int64 `json:"401"`
Num402 int64 `json:"402"`
Num403 int64 `json:"403"`
Num404 int64 `json:"404"`
Num405 int64 `json:"405"`
Num406 int64 `json:"406"`
Num502 int64 `json:"502"`
Num503 int64 `json:"503"`
}

func extractTechsV71(pageHTML []byte) (supplies ResourcesBuildings, facilities Facilities, shipsInfos ShipsInfos, researches Researches, err error) {
var res planetTechsRespV71
if err = json.Unmarshal(pageHTML, &res); err != nil {
if isLogged(pageHTML) {
return supplies, facilities, shipsInfos, researches, ErrInvalidPlanetID
}
return
}
supplies = ResourcesBuildings{
MetalMine: res.Num1,
CrystalMine: res.Num2,
DeuteriumSynthesizer: res.Num3,
SolarPlant: res.Num4,
FusionReactor: res.Num12,
SolarSatellite: res.Num212,
MetalStorage: res.Num22,
CrystalStorage: res.Num23,
DeuteriumTank: res.Num24,
}
facilities = Facilities{
RoboticsFactory: res.Num14,
Shipyard: res.Num21,
ResearchLab: res.Num31,
AllianceDepot: res.Num34,
MissileSilo: res.Num44,
NaniteFactory: res.Num15,
Terraformer: res.Num33,
SpaceDock: res.Num36,
LunarBase: res.Num41,
SensorPhalanx: res.Num42,
JumpGate: res.Num43,
}
shipsInfos = ShipsInfos{
LightFighter: res.Num204,
HeavyFighter: res.Num205,
Cruiser: res.Num206,
Battleship: res.Num207,
Battlecruiser: res.Num215,
Bomber: res.Num211,
Destroyer: res.Num213,
Deathstar: res.Num214,
SmallCargo: res.Num202,
LargeCargo: res.Num203,
ColonyShip: res.Num208,
Recycler: res.Num209,
EspionageProbe: res.Num210,
SolarSatellite: res.Num212,
Crawler: res.Num217,
Reaper: res.Num218,
Pathfinder: res.Num219,
}
researches = Researches{
EnergyTechnology: res.Num113,
LaserTechnology: res.Num120,
IonTechnology: res.Num121,
HyperspaceTechnology: res.Num114,
PlasmaTechnology: res.Num122,
CombustionDrive: res.Num115,
ImpulseDrive: res.Num117,
HyperspaceDrive: res.Num118,
EspionageTechnology: res.Num106,
ComputerTechnology: res.Num108,
Astrophysics: res.Num124,
IntergalacticResearchNetwork: res.Num123,
GravitonTechnology: res.Num199,
WeaponsTechnology: res.Num109,
ShieldingTechnology: res.Num110,
ArmourTechnology: res.Num111,
}
return
}

// ar, Argentina -> Recolector, General, Descubridor
// ba, Balkan -> Sakupljač, General, Otkrivač
// br, Brasil -> Coletor, General, Descobridor
Expand Down
3 changes: 2 additions & 1 deletion fetcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const (
LogoutPage = "logout"
JumpgatelayerPage = "jumpgatelayer"
FetchResourcesPage = "fetchResources"
FetchTechs = "fetchTechs"
TraderOverviewPage = "traderOverview"
GalaxyPage = "galaxy"
AlliancePage = "alliance"
Expand Down Expand Up @@ -60,7 +61,7 @@ const (

func (b *OGame) getPage(page string, celestialID CelestialID, opts ...Option) ([]byte, error) {
vals := url.Values{"page": {"ingame"}, "component": {page}}
if page == FetchResourcesPage {
if page == FetchResourcesPage || page == FetchTechs {
vals = url.Values{"page": {page}}
}
if celestialID != 0 {
Expand Down
Loading

0 comments on commit 4881d2a

Please sign in to comment.