修改API地址
(message *pb.NodeStreamMessage)
| 423 | |
| 424 | // 修改API地址 |
| 425 | func (this *APIStream) handleChangeAPINode(message *pb.NodeStreamMessage) error { |
| 426 | config, err := configs.LoadAPIConfig() |
| 427 | if err != nil { |
| 428 | this.replyFail(message.RequestId, "read config error: "+err.Error()) |
| 429 | return nil |
| 430 | } |
| 431 | |
| 432 | var messageData = &messageconfigs.ChangeAPINodeMessage{} |
| 433 | err = json.Unmarshal(message.DataJSON, messageData) |
| 434 | if err != nil { |
| 435 | this.replyFail(message.RequestId, "unmarshal message failed: "+err.Error()) |
| 436 | return nil |
| 437 | } |
| 438 | |
| 439 | _, err = url.Parse(messageData.Addr) |
| 440 | if err != nil { |
| 441 | this.replyFail(message.RequestId, "invalid new api node address: '"+messageData.Addr+"'") |
| 442 | return nil |
| 443 | } |
| 444 | |
| 445 | config.RPCEndpoints = []string{messageData.Addr} |
| 446 | |
| 447 | // 保存到文件 |
| 448 | err = config.WriteFile(Tea.ConfigFile(configs.ConfigFileName)) |
| 449 | if err != nil { |
| 450 | this.replyFail(message.RequestId, "save config file failed: "+err.Error()) |
| 451 | return nil |
| 452 | } |
| 453 | |
| 454 | this.replyOk(message.RequestId, "") |
| 455 | |
| 456 | goman.New(func() { |
| 457 | // 延后生效,防止变更前的API无法读取到状态 |
| 458 | time.Sleep(1 * time.Second) |
| 459 | |
| 460 | rpcClient, err := rpc.SharedRPC() |
| 461 | if err != nil { |
| 462 | remotelogs.Error("API_STREAM", "change rpc endpoint to '"+ |
| 463 | messageData.Addr+"' failed: "+err.Error()) |
| 464 | return |
| 465 | } |
| 466 | |
| 467 | rpcClient.Close() |
| 468 | |
| 469 | err = rpcClient.UpdateConfig(config) |
| 470 | if err != nil { |
| 471 | remotelogs.Error("API_STREAM", "change rpc endpoint to '"+ |
| 472 | messageData.Addr+"' failed: "+err.Error()) |
| 473 | return |
| 474 | } |
| 475 | |
| 476 | remotelogs.Println("API_STREAM", "change rpc endpoint to '"+ |
| 477 | messageData.Addr+"' successfully") |
| 478 | }) |
| 479 | |
| 480 | return nil |
| 481 | } |
| 482 |
no test coverage detected