use of org.datatransferproject.types.common.models.social.SocialActivityModel in project data-transfer-project by google.
the class MastodonActivityExport method statusToActivity.
private SocialActivityModel statusToActivity(Account account, Status status, MastodonHttpUtilities utilities) {
String contentString = status.getContent();
Matcher matcher = RAW_CONTENT_PATTERN.matcher(contentString);
if (matcher.matches()) {
contentString = matcher.group(1);
}
return new SocialActivityModel(status.getUri(), status.getCreatedAt(), SocialActivityType.NOTE, null, null, null, contentString, status.getUrl());
}
use of org.datatransferproject.types.common.models.social.SocialActivityModel in project data-transfer-project by google.
the class GoogleBloggerImporter method importItem.
@Override
public ImportResult importItem(UUID jobId, IdempotentImportExecutor idempotentExecutor, TokensAndUrlAuthData authData, SocialActivityContainerResource data) throws Exception {
Blogger blogger = getOrCreateBloggerService(authData);
BlogList blogList = blogger.blogs().listByUser("self").execute();
// NB: we are just publishing everything to the first blog, which is a bit of a hack,
// but there is no API to create a new blog.
String blogId = blogList.getItems().get(0).getId();
for (SocialActivityModel activity : data.getActivities()) {
if (activity.getType() == SocialActivityType.NOTE || activity.getType() == SocialActivityType.POST) {
try {
insertActivity(idempotentExecutor, data.getActor(), activity, blogId, authData);
} catch (IOException | RuntimeException e) {
throw new IOException("Couldn't import: " + activity, e);
}
}
}
return new ImportResult(ResultType.OK);
}
use of org.datatransferproject.types.common.models.social.SocialActivityModel in project data-transfer-project by google.
the class DaybookPostsImporter method insertActivity.
private String insertActivity(IdempotentImportExecutor executor, SocialActivityModel activity, TokensAndUrlAuthData authData) throws IOException {
Map<String, String> imageMap = new HashMap<>();
Map<String, String> linkMap = new HashMap<>();
String content = activity.getContent() == null ? "" : activity.getContent();
String title = activity.getTitle() == null ? "" : activity.getTitle();
String location = activity.getLocation() == null || activity.getLocation().getName() == null ? "" : activity.getLocation().getName();
String published = activity.getPublished().toString() == null ? "" : activity.getPublished().toString();
Request.Builder requestBuilder = new Request.Builder().url(baseUrl);
requestBuilder.header("token", authData.getAccessToken());
FormBody.Builder builder = new FormBody.Builder().add("type", "POSTS");
builder.add("exporter", JobMetadata.getExportService());
builder.add("content", content);
builder.add("title", title);
builder.add("location", location);
builder.add("published", published);
Collection<SocialActivityAttachment> linkAttachments = activity.getAttachments().stream().filter(attachment -> attachment.getType() == SocialActivityAttachmentType.LINK).collect(Collectors.toList());
Collection<SocialActivityAttachment> imageAttachments = activity.getAttachments().stream().filter(attachment -> attachment.getType() == SocialActivityAttachmentType.IMAGE).collect(Collectors.toList());
// don't know how they were laid out in the originating service.
if (!linkAttachments.isEmpty()) {
for (SocialActivityAttachment attachment : linkAttachments) {
linkMap.put(attachment.getName(), attachment.getUrl());
}
try {
String json = objectMapper.writeValueAsString(linkMap);
builder.add("link", json);
} catch (JsonProcessingException e) {
monitor.info(() -> String.format("Error processing JSON: %s", e.getMessage()));
}
}
if (!imageAttachments.isEmpty()) {
for (SocialActivityAttachment image : imageAttachments) {
imageMap.put(image.getName() != null ? image.getName() : image.getUrl(), image.getUrl());
}
try {
String json = objectMapper.writeValueAsString(imageMap);
builder.add("image", json);
} catch (JsonProcessingException e) {
monitor.info(() -> String.format("Error processing JSON: %s", e.getMessage()));
}
}
FormBody formBody = builder.build();
requestBuilder.post(formBody);
try (Response response = client.newCall(requestBuilder.build()).execute()) {
int code = response.code();
// Though sometimes it returns error code for success requests
if (code < 200 || code > 299) {
throw new IOException(String.format("Error occurred in request for adding entry, message: %s", response.message()));
}
return response.message();
}
}
Aggregations