-
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathIParatextService.cs
More file actions
135 lines (126 loc) · 5.6 KB
/
IParatextService.cs
File metadata and controls
135 lines (126 loc) · 5.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
using SIL.Converters.Usj;
using SIL.XForge.Models;
using SIL.XForge.Realtime;
using SIL.XForge.Realtime.RichText;
using SIL.XForge.Scripture.Models;
using SIL.XForge.Utils;
namespace SIL.XForge.Scripture.Services;
public interface IParatextService
{
void Init();
Task<bool> CanUserAuthenticateToPTRegistryAsync(UserSecret userSecret);
Task<bool> CanUserAuthenticateToPTArchivesAsync(string userSFId);
Task<IReadOnlyList<ParatextProject>> GetProjectsAsync(UserSecret userSecret);
string? GetParatextUsername(UserSecret userSecret);
void ForceParatextUsername(string username, string forcedUsername);
void ClearForcedUsernames();
Task<Attempt<string>> TryGetProjectRoleAsync(UserSecret userSecret, string paratextId, CancellationToken token);
ParatextSettings? GetParatextSettings(UserSecret userSecret, string paratextId);
Task<IReadOnlyList<ParatextResource>> GetResourcesAsync(string userId);
bool IsResource(string? paratextId);
Task<string> GetResourcePermissionAsync(string paratextId, string userId, CancellationToken token);
Task<IReadOnlyList<ParatextProjectUser>> GetParatextUsersAsync(
UserSecret userSecret,
SFProject project,
CancellationToken token
);
Task<Dictionary<string, string>> GetPermissionsAsync(
UserSecret userSecret,
SFProject project,
IReadOnlyDictionary<string, string> ptUsernameMapping,
int book = 0,
int chapter = 0,
CancellationToken token = default
);
bool ResourceDocsNeedUpdating(SFProject project, ParatextResource resource);
string ConvertUsxToUsfm(UserSecret userSecret, string paratextId, int bookNum, XDocument usx);
IReadOnlyList<int> GetBookList(UserSecret userSecret, string paratextId);
string GetBookText(UserSecret userSecret, string paratextId, int bookNum, string? usfm = null);
Task<int> PutBookText(
UserSecret userSecret,
string paratextId,
int bookNum,
XDocument usx,
Dictionary<int, string> chapterAuthors = null
);
string GetNotes(UserSecret userSecret, string paratextId, int bookNum);
SyncMetricInfo PutNotes(UserSecret userSecret, string paratextId, XElement notesElement);
Task<SyncMetricInfo> UpdateParatextCommentsAsync(
UserSecret userSecret,
string paratextId,
IEnumerable<IDocument<NoteThread>> noteThreadDocs,
IReadOnlyDictionary<string, string> userIdsToUsernames,
Dictionary<string, ParatextUserProfile> ptProjectUsers,
int sfNoteTagId
);
IEnumerable<NoteThreadChange> GetNoteThreadChanges(
UserSecret userSecret,
string paratextId,
int? bookNum,
IEnumerable<IDocument<NoteThread>> noteThreadDocs,
Dictionary<int, ChapterDelta> chapterDeltas,
Dictionary<string, ParatextUserProfile> ptProjectUsers
);
int UpdateCommentTag(UserSecret userSecret, string paratextId, NoteTag noteTag);
Task<BiblicalTermsChanges> GetBiblicalTermsAsync(UserSecret userSecret, string paratextId, IEnumerable<int> books);
SyncMetricInfo UpdateBiblicalTerms(
UserSecret userSecret,
string paratextId,
IReadOnlyList<BiblicalTerm> biblicalTerms
);
Task<SyncMetricInfo> UpdateParatextPermissionsForNewBooksAsync(
UserSecret userSecret,
string paratextId,
IDocument<SFProject> projectDoc,
bool writeToParatext
);
string? GetLatestSharedVersion(UserSecret userSecret, string paratextId);
string GetRepoRevision(UserSecret userSecret, string paratextId);
void SetRepoToRevision(UserSecret userSecret, string paratextId, string desiredRevision);
bool BackupExists(UserSecret userSecret, string paratextId);
bool BackupRepository(UserSecret userSecret, string paratextId);
bool RestoreRepository(UserSecret userSecret, string paratextId);
bool LocalProjectDirExists(string paratextId);
WritingSystem GetWritingSystem(UserSecret userSecret, string paratextId);
void ClearParatextDataCaches(UserSecret userSecret, string paratextId);
void InitializeCommentManager(UserSecret userSecret, string paratextId);
Task<TextSnapshot> GetSnapshotAsync(
UserSecret userSecret,
string sfProjectId,
string book,
int chapter,
DateTime timestamp
);
IAsyncEnumerable<DocumentRevision> GetRevisionHistoryAsync(
UserSecret userSecret,
string sfProjectId,
string book,
int chapter
);
Task<Delta> GetDeltaFromUsfmAsync(string curUserId, string sfProjectId, string usfm, int bookNum);
/// <summary>
/// Gets the chapters in the USFM file as individual USJ objects.
/// </summary>
/// <param name="userSecret">The user secret.</param>
/// <param name="paratextId">The project's paratext identifier.</param>
/// <param name="bookNum">The book number.</param>
/// <param name="usfm">The book USFM.</param>
/// <returns>The chapters enumerated in order from chapter 1 until the last chapter.</returns>
/// <remarks>
/// If chapters are missing, they will be present in the collection at the correct position,
/// but will have an empty Content array.
/// </remarks>
IEnumerable<Usj> GetChaptersAsUsj(UserSecret userSecret, string paratextId, int bookNum, string usfm);
Task<ParatextProject> SendReceiveAsync(
UserSecret userSecret,
string paratextId,
IProgress<ProgressState> progress = null,
CancellationToken token = default,
SyncMetrics syncMetrics = null
);
}