공식 사이트
공부 중인 사이트
Java: java-oembed
https://github.com/michael-simons/java-oembed
영어를 한글로 번역 해보자
AutodiscoveredOembedEndpoint | OembedEndpoint을 상속받는다 (extends : 그대로 사용한다) 이것은 자동 검색된 끝점입니다. api url 생성은 지원하지 않지만 고정 API URL만. 형식도 고정되어 있습니다. -> 서비스에서 사용된다 (apUrl, format-> json) AutodiscoveredOembedEndpoint(final URI apiUrl, final Format format) { this.apiUrl = apiUrl; super.setFormat(format); } |
OembedEndpoint | 이것은 이름, URL 체계 등을 포함하는 oembed 끝점을 설명합니다. 엔드포인트는 <em>Daily 프라체</em> 주변의 여러 텍스트 문서에 포함될 수 있습니다. * 이 클래스는 일반 자바 빈으로 구현되어 별도의 * Spring {@code @Configuration} 내부에서 많은 번거로움이 있습니다. —- 1.이 공급자의 이름입니다. private String name; 2. 기본 URL이 들어감 private String endpoint; 3.이 공급자가 지원하는 형식입니다. private Format format = Format.json; 4.Null 값으로 설정하면 끝점에서 요청해야 하는 최대 너비입니다. private Integer maxWidth; 5. Null 값으로 설정하면 끝점에서 요청해야 하는 최대 높이입니다. private Integer maxHeight; 6. 지원되는 URL 구성표 목록입니다. private List<String> urlSchemes; 7. 이 끝점에 대해 인스턴스화해야 하는 요청 공급자입니다. 기본 생성자가 있어야 합니다. private Class<? extends RequestProvider> requestProviderClass = DefaultRequestProvider.class; 등등등.. —------------------- public URI toApiUrl(final String url) { final List<NameValuePair> query = new ArrayList<>(); 선언 후 format을 String 형식의 (JSON)으로 바꾸고, query에 url을 넣어준다. 가로세로 길이도 넣어준다. URI빌더 반환 try { return new URIBuilder(uri).addParameters(query).build(); } catch (URISyntaxException ex) { throw new OembedException(ex); } |
DefaultOembedResponseRenderer | OembedResponseRenderer을 참조 (implements : 재정의 -> 오버라이딩) 간단한 기본 oembed 응답 렌더러. 대부분의 전달된 HTML을 사용합니다. 랜더를 재정의한다. public String render(final OembedResponse response, final Element originalAnchor) { rv에 타입의 조건을 구분해서 정보를 넣어 줌 사진 : 비디오 : 그냥 reponse.getHtml()으로 함 링크 : 링크주소의 형식을 format으로 정해서, url, title을 넣어줌 주소 : 리치? : |
OembedResponseRenderer | 인터페이스입니다. 이 인터페이스의 목적은 {@link OembedResponse}를 사용 가능한 html 코드 덩어리로 바꾸는 것입니다. {@link OembedResponse} {@code 응답}을 html 문자열로 렌더링합니다. 더 많은 컨텍스트 정보를 제공하기 위해 원본 앵커가 제공됩니다.
|
DefaultRequestProvider | RequestProvider을 참조 (implements : 재정의 -> 오버라이딩) oembed 공급자의 기본 구현입니다. 일반 GET 요청을 생성합니다. public static final Logger LOGGER = LoggerFactory.getLogger(DefaultRequestProvider.class.getPackage().getName()); 주어진 URL에 대해 HTTP 요청을 반환해야 합니다. * @param userAgent 우리의 사용자 에이전트 * @param applicationName 선택적 애플리케이션 이름, 존재하는 경우 userAgent에 추가됨 * @param uri oembed 엔드포인트의 API URL * @return 준비된 HTTP 요청 @Override public HttpGet createRequestFor(final String userAgent, final String applicationName, final URI uri) { LOGGER.debug("Creating HttpGet for url '{}'", uri.toString()); final HttpGet request = new HttpGet(uri); request.setHeader("User-Agent", String.format("%s%s", userAgent, Optional.ofNullable(applicationName).map(s -> "; " + s).orElse(""))); return request; } |
RequestProvider | 인터페이스입니다. oembed 공급자는 포함 가능한 URL에 대한 Http 요청을 생성합니다. |
OembedException | RuntimeException을 상속받습니다. (Extends) 응답 등의 구문 분석으로 인해 발생할 수 있는 확인된 예외를 wrapping하기 위한 예외입니다. |
OembedJsonParser | OembedParser을 참조받습니다. (implements) {@link OembedResponse}에 대한 JSON 구문 분석을 제공합니다. 이 클래스는 private을 사용합니다. * JAXB 주석 검사기가 올바르게 구성되었는지 확인하기 위한 {@link ObjectMapper}. setAnnotationIntrospector에 TypeFactory.defaultInstance()을 한다. -> 인스턴스를 반환한다. 역직렬화 : String 문자열(사람이 이해가능 고수준 언어 JSON) -> Object(객체) @Override public OembedResponse unmarshal(final InputStream in) { try { return objectMapper.readValue(in, OembedResponse.class); } catch (IOException ex) { throw new OembedException(ex); } } 직렬화 : Object(객체) -> String 문자열 (JSON) @Override public void marshal(final OembedResponse oembedResponse, final OutputStream out) { try { this.objectMapper.writeValue(out, oembedResponse); } catch (IOException ex) { throw new OembedException(ex); } } } —-- 참고 ObjectMapper : JSON 형식을 사용할 때, 응답들을 직렬화하고 요청들을 역직렬화 할 때 사용하는 기술이다. https://escapefromcoding.tistory.com/341 —--- |
OembedParser | 인터페이스입니다. 이것은 동일한 이름의 인터페이스에서 1:1 사본입니다. <a href="https://github.com/michael-simons/java-oembed"> 자바 OEM</a> * 체크된 예외는 제외.
OembedResponse unmarshal(InputStream in);
void marshal(OembedResponse oembedResponse, OutputStream out); |
OembedResponse | Serializable을 구현 (implements) - 직렬화 이것은 의 사양에 따른 유효한 OEmbed 응답을 나타냅니다. * oembed.com. 고장이 난 경우 확인 질문의 끝점은 유효한 응답(유형 등)을 반환합니다. —--- 직렬화
|
OembedService 가장 중요해 보임 |
|
OembedXmlParser | OembedParser를 참조 (implements : 재정의) {@link OembedResponse}에 대한 XML 구문 분석을 제공합니다. -새 OembedJsonParser를 만듭니다. JAXB 컨텍스트를 초기화할 수 없는 경우 예외가 발생할 수 있습니다. OembedXmlParser() { try { this.jaxbContext = JAXBContext.newInstance(OembedResponse.class); } catch (JAXBException ex) { // Ignore this... I have no clue how that should happen. throw new OembedException(ex); } } 역직렬화 : String 문자열(사람이 이해가능 고수준 언어 JSON) -> Object(객체) @Override public OembedResponse unmarshal(final InputStream in) { try { return (OembedResponse) jaxbContext.createUnmarshaller().unmarshal(in); } catch (JAXBException e) { throw new OembedException(e); } } 직렬화 : Object(객체) -> String 문자열(사람이 이해가능 고수준 언어 JSON) @Override public void marshal(final OembedResponse oembedResponse, final OutputStream out) { try { jaxbContext.createMarshaller().marshal(oembedResponse, out); } catch (JAXBException e) { throw new OembedException(e); } } |