Hi all,
If I want to write to a text file in a POD in CSS (simply write a line of string) using an http request how would I do it? I have the following patch request, but it does not work. The server is throwing me 415: UnsupportedMediaTypeHttpError
error. I cannot do a put request because it will simply replace what’s already in the file. I just need to write a new line of string to the file.
final editResponse = await http.patch(
Uri.parse(textFileUrl),
headers: <String, String>{
'Accept': '*/*',
'Authorization': 'DPoP $accessToken',
'Connection': 'keep-alive',
'Content-Type': 'text/plain',
'DPoP': dPopToken,
},
body: dataLineString,
);
Any help in this would be much appreciated.
Thank you, Anushka
Unfortunately you cannot do that with a PATCH, but you can do a GET, append the string to the response body, and then PUT that.
Hi @Vincent , thanks for your reply. Yes, that’s a workaround. However, that wouldn’t be possible with only Write access to the file I assume?
Write access should be sufficient, but unfortunately Append access wouldn’t be.
Yes, sorry Append access wouldn’t be possible in this case. Thanks for the clarification.
A_A
June 8, 2023, 1:44pm
6
If you store the data as rdf (eg text/turtle) you could use a n3 patch to add this entry. Here’s the specification: Solid Protocol
Here’s an example usage that adds a webId to a group (from here ):
async addCurrentUserToGroup(groupUrl: string) {
const webId = await this.authService.getWebId();
const n3Patch = `
@prefix solid: <http://www.w3.org/ns/solid/terms#>.
@prefix vcard: <http://www.w3.org/2006/vcard/ns#>.
_:addAccess a solid:InsertDeletePatch;
solid:inserts { <${groupUrl}> vcard:hasMember <${webId}>. }.
`;
await this.authService.authenticatedFetch(groupUrl, {
method: 'PATCH',
headers: {
'content-type': 'text/n3',
},
body: n3Patch,
});
}
1 Like
jeffz
June 8, 2023, 4:29pm
7
It is also possible to create a new turtle file with the same N3 patch.
1 Like