private String getPageContent()

in community/document-readers/spring-ai-alibaba-starter-document-reader-notion/src/main/java/com/alibaba/cloud/ai/reader/notion/NotionResource.java [122:192]


	private String getPageContent(String notionToken, String pageId) {
		try {
			// 1. Get page content
			URI pageUri = URI.create(BASE_URL + "/pages/" + pageId);
			HttpRequest pageRequest = HttpRequest.newBuilder()
				.header("Authorization", "Bearer " + notionToken)
				.header("Notion-Version", API_VERSION)
				.uri(pageUri)
				.GET()
				.build();

			HttpResponse<String> pageResponse = this.httpClient.send(pageRequest, HttpResponse.BodyHandlers.ofString());
			Assert.isTrue(pageResponse.statusCode() == 200, "Failed to fetch page content");

			// 2. Parse page content
			ObjectMapper objectMapper = new ObjectMapper();
			JsonNode pageJson = objectMapper.readTree(pageResponse.body());
			StringBuilder content = new StringBuilder();

			// Extract page title
			JsonNode properties = pageJson.get("properties");
			if (properties != null && properties.has("title")) {
				JsonNode titleProp = properties.get("title");
				JsonNode titleArray = titleProp.get("title");
				if (titleArray != null && titleArray.isArray()) {
					for (JsonNode titleNode : titleArray) {
						content.append(titleNode.get("plain_text").asText());
					}
					content.append("\n\n");
				}
			}

			// 3. Get page blocks
			URI blocksUri = URI.create(BASE_URL + "/blocks/" + pageId + "/children");
			HttpRequest blocksRequest = HttpRequest.newBuilder()
				.header("Authorization", "Bearer " + notionToken)
				.header("Notion-Version", API_VERSION)
				.uri(blocksUri)
				.GET()
				.build();

			HttpResponse<String> blocksResponse = this.httpClient.send(blocksRequest,
					HttpResponse.BodyHandlers.ofString());
			Assert.isTrue(blocksResponse.statusCode() == 200, "Failed to fetch page blocks");

			// 4. Parse block content
			JsonNode blocksJson = objectMapper.readTree(blocksResponse.body());
			JsonNode blocks = blocksJson.get("results");

			// 5. Extract text content
			if (blocks != null && blocks.isArray()) {
				for (JsonNode block : blocks) {
					String type = block.get("type").asText();
					if (block.has(type)) {
						JsonNode typeObj = block.get(type);
						if (typeObj.has("rich_text")) {
							JsonNode richText = typeObj.get("rich_text");
							for (JsonNode textNode : richText) {
								content.append(textNode.get("plain_text").asText());
							}
							content.append("\n");
						}
					}
				}
			}
			return content.toString();
		}
		catch (Exception e) {
			throw new RuntimeException("Failed to get page content", e);
		}
	}