• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java IoUtil类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.eclipse.che.commons.lang.IoUtil的典型用法代码示例。如果您正苦于以下问题:Java IoUtil类的具体用法?Java IoUtil怎么用?Java IoUtil使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



IoUtil类属于org.eclipse.che.commons.lang包,在下文中一共展示了IoUtil类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: doRequest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private JsonValue doRequest(URL tokenInfoUrl) throws IOException, JsonParseException {
  HttpURLConnection http = null;
  try {
    http = (HttpURLConnection) tokenInfoUrl.openConnection();
    int responseCode = http.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
      LOG.warn(
          "Can not receive google token by path: {}. Response status: {}. Error message: {}",
          tokenInfoUrl.toString(),
          responseCode,
          IoUtil.readStream(http.getErrorStream()));
      return null;
    }

    JsonValue result;
    try (InputStream input = http.getInputStream()) {
      result = JsonHelper.parseJson(input);
    }
    return result;
  } finally {
    if (http != null) {
      http.disconnect();
    }
  }
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:26,代码来源:GoogleOAuthAuthenticator.java


示例2: fromTemplate

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/**
 * Initialize {@link TestFactory} base upon template.
 *
 * @see FactoryTemplate
 */
public TestFactoryBuilder fromTemplate(String template) throws Exception {
  String name = NameGenerator.generate("factory", 6);
  InputStream resource =
      TestFactory.class.getResourceAsStream(
          format("/templates/factory/%s/%s", infrastructure, template));
  if (resource == null) {
    throw new IOException(format("Factory template '%s' not found", template));
  }

  String factoryTemplate = IoUtil.readStream(resource);
  FactoryDto factoryDto =
      DtoFactory.getInstance()
          .createDtoFromJson(factoryTemplate, FactoryDto.class)
          .withName(name);
  factoryDto.getWorkspace().setName(name);
  return new TestFactoryBuilder(factoryDto);
}
 
开发者ID:eclipse,项目名称:che,代码行数:23,代码来源:TestFactoryInitializer.java


示例3: setProjectType

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/** Set type for existing project on vfs */
public void setProjectType(String workspaceId, String template, String projectName)
    throws Exception {
  InputStream in = getClass().getResourceAsStream("/templates/project/" + template);
  String json = IoUtil.readAndCloseQuietly(in);

  ProjectConfigDto project = getInstance().createDtoFromJson(json, ProjectConfigDto.class);
  project.setName(projectName);

  String url = getWsAgentUrl(workspaceId);
  requestFactory
      .fromUrl(url + "/" + projectName)
      .usePutMethod()
      .setAuthorizationHeader(machineServiceClient.getMachineApiToken(workspaceId))
      .setBody(project)
      .request();
}
 
开发者ID:eclipse,项目名称:che,代码行数:18,代码来源:TestProjectServiceClient.java


示例4: setIconData

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/**
 * Searches for stack icon and set image data into given stack.
 *
 * @param stack stack for icon setup
 * @param stackIconFolderPath path to icon folder
 */
protected void setIconData(StackImpl stack, Path stackIconFolderPath) {
  StackIcon stackIcon = stack.getStackIcon();
  if (stackIcon == null) {
    return;
  }
  if (stackIconFolderPath == null) {
    stack.setStackIcon(null);
    LOG.warn("No configured image found for stack {}", stack.getId());
    return;
  }
  try {
    final Path stackIconPath = stackIconFolderPath.resolve(stackIcon.getName());
    final byte[] imageData = IOUtils.toByteArray(IoUtil.getResource(stackIconPath.toString()));
    stackIcon = new StackIcon(stackIcon.getName(), stackIcon.getMediaType(), imageData);
    stack.setStackIcon(stackIcon);
  } catch (IOException ex) {
    stack.setStackIcon(null);
    LOG.error(
        format("Failed to load stack icon data for the stack with id '%s'", stack.getId()), ex);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:28,代码来源:StackLoader.java


示例5: clean

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private static void clean() {
  Pair<File, Integer> pair;
  final Set<Pair<File, Integer>> failToDelete = new HashSet<>();
  while ((pair = files.poll()) != null) {
    final File file = pair.first;
    int deleteAttempts = pair.second;
    if (file.exists()) {
      if (!IoUtil.deleteRecursive(file)) {
        failToDelete.add(Pair.of(file, ++deleteAttempts));
        if (deleteAttempts > logAfterAttempts) {
          LOG.error("Unable delete file '{}' after {} tries", file, deleteAttempts);
        }
      } else if (LOG.isDebugEnabled()) {
        LOG.debug("Delete file '{}'", file);
      }
    }
  }
  if (!failToDelete.isEmpty()) {
    files.addAll(failToDelete);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:22,代码来源:FileCleaner.java


示例6: restoreDependencies

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private void restoreDependencies(String projectPath) throws LanguageServerException {
  ProcessBuilder processBuilder = new ProcessBuilder("dotnet", "restore");
  processBuilder.directory(new File(LanguageServiceUtils.removeUriScheme(projectPath)));
  try {
    Process process = processBuilder.start();
    int resultCode = process.waitFor();
    if (resultCode != 0) {
      String err = IoUtil.readStream(process.getErrorStream());
      String in = IoUtil.readStream(process.getInputStream());
      throw new LanguageServerException(
          "Can't restore dependencies. Error: " + err + ". Output: " + in);
    }
  } catch (IOException | InterruptedException e) {
    throw new LanguageServerException("Can't start CSharp language server", e);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:17,代码来源:CSharpLanguageServerLauncher.java


示例7: detectNodeJsCommand

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/** Returns NodeJs command to run: either {@code nodejs} or {@code node}. */
private static String detectNodeJsCommand() {
  String detectionCommand =
      "if command -v nodejs >/dev/null 2>&1; then echo -n 'nodejs'; else echo -n 'node'; fi";
  ProcessBuilder builder = new ProcessBuilder("sh", "-c", detectionCommand);

  try {
    Process process = builder.start();
    int resultCode = process.waitFor();
    if (resultCode != 0) {
      String errMsg = IoUtil.readAndCloseQuietly(process.getErrorStream());
      throw new IllegalStateException("NodeJs not found. " + errMsg);
    }

    return IoUtil.readAndCloseQuietly(process.getInputStream());
  } catch (IOException | InterruptedException e) {
    throw new IllegalStateException("NodeJs not found", e);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:20,代码来源:NodeJsDebugProcess.java


示例8: getContent

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
@Override
public String getContent() throws IOException {
  HttpURLConnection connection = null;
  String content;

  try {
    if (url == null) {
      throw new IOException("StatusPage ID and API key are not configured");
    }
    connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("GET");
    connection.setRequestProperty("Authorization", "OAuth " + apiKey);
    connection.setConnectTimeout(10 * 1000);
    connection.setReadTimeout(10 * 1000);

    if (connection.getResponseCode() / 100 == 2) {
      content = IoUtil.readAndCloseQuietly(connection.getInputStream());
    } else {
      throw new IOException(IoUtil.readAndCloseQuietly(connection.getErrorStream()));
    }
  } finally {
    if (connection != null) {
      connection.disconnect();
    }
  }
  return content;
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:28,代码来源:HttpStatusPageContentProvider.java


示例9: doRequest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private JsonValue doRequest(URL tokenInfoUrl, Map<String, String> params)
    throws IOException, JsonParseException {
  HttpURLConnection http = null;
  try {
    http = (HttpURLConnection) tokenInfoUrl.openConnection();
    http.setRequestMethod("GET");
    if (params != null) {
      for (Map.Entry<String, String> entry : params.entrySet()) {
        http.setRequestProperty(entry.getKey(), entry.getValue());
      }
    }
    int responseCode = http.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
      LOG.warn(
          "Can not receive RedHat user by path: {}. Response status: {}. Error message: {}",
          tokenInfoUrl.toString(),
          responseCode,
          IoUtil.readStream(http.getErrorStream()));
      return null;
    }

    JsonValue result;
    try (InputStream input = http.getInputStream()) {
      result = JsonHelper.parseJson(input);
    }
    return result;
  } finally {
    if (http != null) {
      http.disconnect();
    }
  }
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:33,代码来源:RedHatOAuthAuthenticator.java


示例10: doRequest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private JsonValue doRequest(URL tokenInfoUrl, Map<String, String> params)
    throws IOException, JsonParseException {
  HttpURLConnection http = null;
  try {
    http = (HttpURLConnection) tokenInfoUrl.openConnection();
    http.setRequestMethod("GET");
    if (params != null) {
      for (Map.Entry<String, String> entry : params.entrySet()) {
        http.setRequestProperty(entry.getKey(), entry.getValue());
      }
    }
    int responseCode = http.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
      LOG.warn(
          "Can not receive wso2 token by path: {}. Response status: {}. Error message: {}",
          tokenInfoUrl.toString(),
          responseCode,
          IoUtil.readStream(http.getErrorStream()));
      return null;
    }

    JsonValue result;
    try (InputStream input = http.getInputStream()) {
      result = JsonHelper.parseJson(input);
    }
    return result;
  } finally {
    if (http != null) {
      http.disconnect();
    }
  }
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:33,代码来源:WSO2OAuthAuthenticator.java


示例11: doRequest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private JsonValue doRequest(URL tokenInfoUrl, Map<String, String> params)
    throws IOException, JsonParseException {
  HttpURLConnection http = null;
  try {
    http = (HttpURLConnection) tokenInfoUrl.openConnection();
    http.setRequestMethod("GET");
    if (params != null) {
      for (Map.Entry<String, String> entry : params.entrySet()) {
        http.setRequestProperty(entry.getKey(), entry.getValue());
      }
    }
    int responseCode = http.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
      LOG.warn(
          "Can not receive LinkedIn user by path: {}. Response status: {}. Error message: {}",
          tokenInfoUrl.toString(),
          responseCode,
          IoUtil.readStream(http.getErrorStream()));
      return null;
    }

    JsonValue result;
    try (InputStream input = http.getInputStream()) {
      result = JsonHelper.parseJson(input);
    }
    return result;
  } finally {
    if (http != null) {
      http.disconnect();
    }
  }
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:33,代码来源:LinkedInOAuthAuthenticator.java


示例12: doRequest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private <O> O doRequest(URL requestUrl, Class<O> userClass, Map<String, String> params)
    throws IOException, JsonParseException {
  HttpURLConnection http = null;
  try {
    http = (HttpURLConnection) requestUrl.openConnection();
    http.setRequestMethod("GET");
    if (params != null) {
      for (Map.Entry<String, String> entry : params.entrySet()) {
        http.setRequestProperty(entry.getKey(), entry.getValue());
      }
    }
    int responseCode = http.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
      LOG.warn(
          "Can not receive bitbucket user by path: {}. Response status: {}. Error message: {}",
          requestUrl.toString(),
          responseCode,
          IoUtil.readStream(http.getErrorStream()));
      return null;
    }

    try (InputStream input = http.getInputStream()) {
      return JsonHelper.fromJson(input, userClass, null);
    }
  } finally {
    if (http != null) {
      http.disconnect();
    }
  }
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:31,代码来源:BitbucketOAuthAuthenticator.java


示例13: WorkspaceSyncPublicKeyProvider

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
@Inject
public WorkspaceSyncPublicKeyProvider(
    @Named("workspace.backup.public_key_path") String pubKeyPath) throws IOException {

  pubKey =
      IoUtil.readAndCloseQuietly(
          new BufferedInputStream(new FileInputStream(new File(pubKeyPath))));
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:9,代码来源:WorkspaceSyncPublicKeyProvider.java


示例14: doRequest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private JsonValue doRequest(URL tokenInfoUrl, Map<String, String> params)
    throws IOException, JsonParseException {
  HttpURLConnection http = null;
  try {
    http = (HttpURLConnection) tokenInfoUrl.openConnection();
    http.setRequestMethod("GET");
    if (params != null) {
      for (Map.Entry<String, String> entry : params.entrySet()) {
        http.setRequestProperty(entry.getKey(), entry.getValue());
      }
    }
    int responseCode = http.getResponseCode();
    if (responseCode != HttpURLConnection.HTTP_OK) {
      LOG.warn(
          "Can not receive microsoft user by path: {}. Response status: {}. Error message: {}",
          tokenInfoUrl.toString(),
          responseCode,
          IoUtil.readStream(http.getErrorStream()));
      return null;
    }

    JsonValue result;
    try (InputStream input = http.getInputStream()) {
      result = JsonHelper.parseJson(input);
    }
    return result;
  } finally {
    if (http != null) {
      http.disconnect();
    }
  }
}
 
开发者ID:codenvy,项目名称:codenvy,代码行数:33,代码来源:MicrosoftOauthAuthenticator.java


示例15: get

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
@Override
public String get() {
  String localConfDir = System.getenv(CheBootstrap.CHE_LOCAL_CONF_DIR);
  if (localConfDir == null) {
    return null;
  }
  File extConfDir = new File(localConfDir, PLUGIN_CONF);
  if (!extConfDir.isDirectory()) {
    if (extConfDir.exists()) {
      LOG.warn(
          "{} set to the {} but it must be directory not file",
          CheBootstrap.CHE_LOCAL_CONF_DIR,
          extConfDir);
    }
    return null;
  }
  if (SystemInfo.isWindows()) {
    try {
      final Path cheHome = WindowsHostUtils.ensureCheHomeExist();
      final Path plgConfDir = cheHome.resolve(PLUGIN_CONF);
      IoUtil.copy(extConfDir, plgConfDir.toFile(), null, true);
      return getTargetOptions(plgConfDir.toString());
    } catch (IOException e) {
      LOG.warn(e.getMessage());
      throw new RuntimeException(e);
    }
  } else {
    return getTargetOptions(extConfDir.getAbsolutePath());
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:31,代码来源:DockerExtConfBindingProvider.java


示例16: importZipProject

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/** Import zip project from file system into user workspace. */
public void importZipProject(
    String workspaceId, Path zipFile, String projectName, String template) throws Exception {
  String url = getWsAgentUrl(workspaceId) + "/import/" + projectName;
  //    createFolder(workspaceId, projectName);

  HttpURLConnection httpConnection = null;
  try {
    httpConnection = (HttpURLConnection) new URL(url).openConnection();
    httpConnection.setRequestMethod("POST");
    httpConnection.setRequestProperty("Content-Type", "application/zip");
    httpConnection.addRequestProperty(
        "Authorization", machineServiceClient.getMachineApiToken(workspaceId));
    httpConnection.setDoOutput(true);

    try (OutputStream outputStream = httpConnection.getOutputStream()) {
      Files.copy(zipFile, outputStream);
      if (httpConnection.getResponseCode() != 201) {
        throw new RuntimeException(
            "Cannot deploy requested project using ProjectServiceClient REST API. Server response "
                + httpConnection.getResponseCode()
                + " "
                + IoUtil.readStream(httpConnection.getErrorStream())
                + "REST url: "
                + url);
      }
    }
  } finally {
    ofNullable(httpConnection).ifPresent(HttpURLConnection::disconnect);
  }

  setProjectType(workspaceId, template, projectName);
}
 
开发者ID:eclipse,项目名称:che,代码行数:34,代码来源:TestProjectServiceClient.java


示例17: createFileInProject

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/** Creates file in the project. */
public void createFileInProject(
    String workspaceId, String parentFolder, String fileName, String content) throws Exception {
  String apiRESTUrl = getWsAgentUrl(workspaceId) + "/file/" + parentFolder + "?name=" + fileName;

  HttpURLConnection httpConnection = null;
  try {
    httpConnection = (HttpURLConnection) new URL(apiRESTUrl).openConnection();
    httpConnection.setRequestMethod("POST");
    httpConnection.setRequestProperty("Content-Type", "text/plain");
    httpConnection.addRequestProperty(
        "Authorization", machineServiceClient.getMachineApiToken(workspaceId));
    httpConnection.setDoOutput(true);
    try (OutputStream output = httpConnection.getOutputStream()) {
      output.write(content.getBytes("UTF-8"));
      if (httpConnection.getResponseCode() != 201) {
        throw new RuntimeException(
            "Cannot create requested content in the current project: "
                + apiRESTUrl
                + " something went wrong "
                + httpConnection.getResponseCode()
                + IoUtil.readStream(httpConnection.getErrorStream()));
      }
    }
  } finally {
    ofNullable(httpConnection).ifPresent(HttpURLConnection::disconnect);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:29,代码来源:TestProjectServiceClient.java


示例18: updateFile

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
/** Updates file content. */
public void updateFile(String workspaceId, String pathToFile, String content) throws Exception {
  String url = getWsAgentUrl(workspaceId) + "/file/" + pathToFile;

  HttpURLConnection httpConnection = null;
  try {
    httpConnection = (HttpURLConnection) new URL(url).openConnection();
    httpConnection.setRequestMethod("PUT");
    httpConnection.setRequestProperty("Content-Type", "text/plain");
    httpConnection.addRequestProperty(
        "Authorization", machineServiceClient.getMachineApiToken(workspaceId));
    httpConnection.setDoOutput(true);

    try (OutputStream output = httpConnection.getOutputStream()) {
      output.write(content.getBytes("UTF-8"));
      if (httpConnection.getResponseCode() != 200) {
        throw new RuntimeException(
            "Cannot update content in the current file: "
                + url
                + " something went wrong "
                + httpConnection.getResponseCode()
                + IoUtil.readStream(httpConnection.getErrorStream()));
      }
    }
  } finally {
    ofNullable(httpConnection).ifPresent(HttpURLConnection::disconnect);
  }
}
 
开发者ID:eclipse,项目名称:che,代码行数:29,代码来源:TestProjectServiceClient.java


示例19: createMavenArchetypeStartProjectByWizard

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
@Test
public void createMavenArchetypeStartProjectByWizard() throws Exception {
  Stream<String> expectedItems =
      Stream.of(
          NAME_OF_ARTIFACT + "/src/main/java/" + NAME_OF_ARTIFACT + "/App.java",
          NAME_OF_ARTIFACT + "/src/test/java/" + NAME_OF_ARTIFACT + "/AppTest.java",
          NAME_OF_ARTIFACT + "/pom.xml");
  ide.open(workspace);
  menu.runCommand(
      TestMenuCommandsConstants.Workspace.WORKSPACE,
      TestMenuCommandsConstants.Workspace.CREATE_PROJECT);
  projectWizard.selectTypeProject(Wizard.TypeProject.MAVEN);
  projectWizard.typeProjectNameOnWizard(NAME_OF_ARTIFACT);
  projectWizard.clickNextButton();
  projectWizard.waitOpenProjectConfigForm();
  projectWizard.selectArcheTypeFromList(Wizard.Archetypes.QUICK_START);
  projectWizard.checkArtifactIdOnWizardContainsText(NAME_OF_ARTIFACT);
  projectWizard.checkGroupIdOnWizardContainsText(NAME_OF_ARTIFACT);
  projectWizard.checkVersionOnWizardContainsText("1.0-SNAPSHOT");
  projectWizard.clickCreateButton();
  projectExplorer.waitItem(NAME_OF_ARTIFACT);
  console.waitExpectedTextIntoConsole(TestBuildConstants.BUILD_SUCCESS);
  projectExplorer.quickExpandWithJavaScript();
  expectedItems.forEach(projectExplorer::waitItem);
  projectExplorer.openItemByPath(NAME_OF_ARTIFACT + "/pom.xml");

  String pathToExpectedContentOfPom =
      CheckGeneratingMavenArchetypeTest.class
          .getResource("pom-quick-start-archetype-context")
          .getFile();
  editor.waitTextIntoEditor(
      IoUtil.readAndCloseQuietly(IoUtil.getResource(pathToExpectedContentOfPom)));
}
 
开发者ID:eclipse,项目名称:che,代码行数:34,代码来源:CheckGeneratingMavenArchetypeTest.java


示例20: setFieldsForTest

import org.eclipse.che.commons.lang.IoUtil; //导入依赖的package包/类
private void setFieldsForTest(String nameCurrentTest) throws Exception {
  pathToCurrentPackage = pathToPackageInChePrefix + "/" + nameCurrentTest;

  URL resourcesInA =
      getClass()
          .getResource(
              "/org/eclipse/che/selenium/refactor/parameters/" + nameCurrentTest + "/in/A.java");
  URL resourcesOutA =
      getClass()
          .getResource(
              "/org/eclipse/che/selenium/refactor/parameters/" + nameCurrentTest + "/out/A.java");

  contentFromInA = IoUtil.readAndCloseQuietly(resourcesInA.openStream());
  contentFromOutA = IoUtil.readAndCloseQuietly(resourcesOutA.openStream());
}
 
开发者ID:eclipse,项目名称:che,代码行数:16,代码来源:RenameParametersTest.java



注:本文中的org.eclipse.che.commons.lang.IoUtil类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java DeleteDeploymentCmd类代码示例发布时间:2022-05-15
下一篇:
Java TimelineServiceState类代码示例发布时间:2022-05-15
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap