Skip to content

Commit eb8b0d6

Browse files
authored
Merge pull request #5 from AtlasSystems/feature/Aeon51fix
Feature/aeon51fix
2 parents 70a85ca + e11985c commit eb8b0d6

2 files changed

Lines changed: 23 additions & 35 deletions

File tree

Aeon-ArchivesSpace-Addon/Aeon-ArchivesSpace.lua

Lines changed: 15 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,6 @@ end
265265

266266
function CreateItemsTable()
267267
local itemsTable = types["System.Data.DataTable"]();
268-
269268
itemsTable.Columns:Add("Title");
270269
itemsTable.Columns:Add("SubTitle");
271270
itemsTable.Columns:Add("CallNumber");
@@ -457,23 +456,21 @@ end
457456

458457
function AddRowToItemsTable(itemsDataTable, availableData)
459458
local itemRow = itemsDataTable:NewRow();
460-
461-
itemRow:set_item(HostAppInfo.InstanceDataImport["Title"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Title"].AspaceData]);
462-
itemRow:set_item(HostAppInfo.InstanceDataImport["SubTitle"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["SubTitle"].AspaceData]);
463-
itemRow:set_item(HostAppInfo.InstanceDataImport["CallNumber"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["CallNumber"].AspaceData]);
464-
itemRow:set_item(HostAppInfo.InstanceDataImport["Author"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Author"].AspaceData]);
465-
itemRow:set_item(HostAppInfo.InstanceDataImport["Volume"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Volume"].AspaceData]);
466-
itemRow:set_item(HostAppInfo.InstanceDataImport["Barcode"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Barcode"].AspaceData]);
467-
itemRow:set_item(HostAppInfo.InstanceDataImport["Location"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Location"].AspaceData]);
468-
459+
itemRow:set_Item(HostAppInfo.InstanceDataImport["Title"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Title"].AspaceData]);
460+
itemRow:set_Item(HostAppInfo.InstanceDataImport["SubTitle"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["SubTitle"].AspaceData]);
461+
itemRow:set_Item(HostAppInfo.InstanceDataImport["CallNumber"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["CallNumber"].AspaceData]);
462+
itemRow:set_Item(HostAppInfo.InstanceDataImport["Author"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Author"].AspaceData]);
463+
itemRow:set_Item(HostAppInfo.InstanceDataImport["Volume"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Volume"].AspaceData]);
464+
itemRow:set_Item(HostAppInfo.InstanceDataImport["Barcode"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Barcode"].AspaceData]);
465+
itemRow:set_Item(HostAppInfo.InstanceDataImport["Location"].ItemGridColumn, availableData[HostAppInfo.InstanceDataImport["Location"].AspaceData]);
469466
itemsDataTable.Rows:Add(itemRow);
470467
end
471468

472469
function ImportInstance_Clicked()
473470
local importRow = catalogSearchForm.Grid.GridControl.MainView:GetFocusedRow();
474471

475472
if (importRow == nil) then
476-
log:Debug("Import row was nil. Cancelling the import.");
473+
LogDebug("Import row was nil. Cancelling the import.");
477474
return;
478475
end
479476

@@ -663,7 +660,7 @@ function ExtractCreatorName(creatorRecord)
663660
end
664661

665662
function GetAuthenticationToken()
666-
local authenticationToken = JsonParser:ParseJSON(SendApiRequest('/users/' .. settings.Username .. '/login', 'POST', { ["password"] = settings.Password }));
663+
local authenticationToken = JsonParser:ParseJSON(SendApiRequest('/users/' .. settings.Username .. '/login', 'POST', "password="..AtlasHelpers.UrlEncode(settings.Password)));
667664

668665
if (authenticationToken == nil or authenticationToken == JsonParser.NIL) then
669666
ReportError("Unable to get valid authentication token.");
@@ -734,13 +731,6 @@ function SendApiRequest(apiPath, method, parameters, authToken)
734731

735732
local webClient = types["System.Net.WebClient"]();
736733

737-
local postParameters = types["System.Collections.Specialized.NameValueCollection"]();
738-
if (parameters ~= nil) then
739-
for k, v in pairs(parameters) do
740-
postParameters:Add(k, v);
741-
end
742-
end
743-
744734
webClient.Headers:Clear();
745735
if (authToken ~= nil and authToken ~= "") then
746736
webClient.Headers:Add("X-ArchivesSpace-Session", authToken);
@@ -749,31 +739,28 @@ function SendApiRequest(apiPath, method, parameters, authToken)
749739
local success, result;
750740

751741
if (method == 'POST') then
752-
success, result = pcall(WebClientPost, webClient, apiPath, postParameters);
742+
success, result = pcall(WebClientPost, webClient, apiPath, method, parameters);
753743
else
754744
success, result = pcall(WebClientGet, webClient, apiPath);
755745
end
756746

757747
if (success) then
758748
LogDebug("API call successful");
759-
760-
local utf8Result = types["System.Text.Encoding"].UTF8:GetString(result);
761-
762-
LogDebug("Response: " .. utf8Result);
763-
return utf8Result;
749+
LogDebug("Response: " .. result);
750+
return result;
764751
else
765752
LogDebug("API call error");
766753
OnError(result);
767754
return "";
768755
end
769756
end
770757

771-
function WebClientPost(webClient, apiPath, postParameters)
772-
return webClient:UploadValues(PathCombine(settings.ApiBaseURL, apiPath), method, postParameters);
758+
function WebClientPost(webClient, apiPath, method, postParameters)
759+
return webClient:UploadString(PathCombine(settings.ApiBaseURL, apiPath), method, postParameters);
773760
end
774761

775762
function WebClientGet(webClient, apiPath)
776-
return webClient:DownloadData(PathCombine(settings.ApiBaseURL, apiPath));
763+
return webClient:DownloadString(PathCombine(settings.ApiBaseURL, apiPath));
777764
end
778765

779766
function IsSignedIn()

Aeon-ArchivesSpace-Addon/Config.xml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
33
<Name>ArchivesSpace Interface</Name>
44
<Author>Atlas Systems, Inc.</Author>
5-
<Version>2.1.0</Version>
5+
<Version>2.2.0</Version>
66
<Active>True</Active>
77
<Type>Addon</Type>
88
<Description>This addon performs searches in ArchivesSpace using the staff interface. This addon supports ArchivesSpace versions v2.8.0 and later.</Description>
99
<Forms>
1010
<Form>FormRequest</Form>
1111
</Forms>
12+
<Permissions />
1213
<Settings>
1314
<Setting name="AutoSearch" value="true" type="boolean">
1415
<Description>Defines whether the search should be automatically performed when the form opens.</Description>
@@ -26,13 +27,13 @@
2627
<Description>The staff password to use when logging in to the web interface. It is recommended to use an account that has read-only permissions on the relevant repositories.</Description>
2728
</Setting>
2829
<Setting name="AutoSearchPriority" value="Title, Author, CallNumber" type="string">
29-
<Description>A comma-separated list of searches to be performed in order.</Description>
30-
</Setting>
30+
<Description>A comma-separated list of searches to be performed in order.</Description>
31+
</Setting>
3132
<Setting name="AutoGroupResults" value="false" type="boolean">
32-
<Description>Specifies whether the results grid should be grouped automatically. The table will be grouped by the "Volume" column, which refers to either the instance's top container display string or digital object title.</Description>
33-
</Setting>
33+
<Description>Specifies whether the results grid should be grouped automatically. The table will be grouped by the "Volume" column, which refers to either the instance's top container display string or digital object title.</Description>
34+
</Setting>
3435
</Settings>
3536
<Files>
3637
<File>Aeon-ArchivesSpace.lua</File>
3738
</Files>
38-
</Configuration>
39+
</Configuration>

0 commit comments

Comments
 (0)