Skip to content

adding Output formats in links #128

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jun 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions PxWeb.sln
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Px.Search.Lucene", "Px.Sear
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PxWebApi.BigTests", "PxWebApi.BigTests\PxWebApi.BigTests.csproj", "{E52A7944-28C6-4004-9282-1AE8BC539F8F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PxWebApi_Mvc.Tests", "PxWebApi_Mvc.Tests\PxWebApi_Mvc.Tests.csproj", "{DE680238-98E9-4FCE-9D55-9B849F893238}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -45,6 +47,10 @@ Global
{E52A7944-28C6-4004-9282-1AE8BC539F8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E52A7944-28C6-4004-9282-1AE8BC539F8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E52A7944-28C6-4004-9282-1AE8BC539F8F}.Release|Any CPU.Build.0 = Release|Any CPU
{DE680238-98E9-4FCE-9D55-9B849F893238}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE680238-98E9-4FCE-9D55-9B849F893238}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE680238-98E9-4FCE-9D55-9B849F893238}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE680238-98E9-4FCE-9D55-9B849F893238}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
30 changes: 20 additions & 10 deletions PxWeb/Mappers/DatasetMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -75,14 +75,6 @@ public Dataset Map(PXModel model, string id, string language)
AddValueNotes(variableValue, dataset, dimensionValue);


//Codelists
var codeLists = new System.Collections.Generic.List<CodeListInformation>();
MapCodelists(codeLists, variable);
if (codeLists != null)
{
dataset.AddCodelist(dimensionValue, codeLists);
}

if (!variable.IsContentVariable) continue;

var unitDecimals = (variableValue.HasPrecision()) ? variableValue.Precision : model.Meta.ShowDecimals;
Expand Down Expand Up @@ -117,13 +109,24 @@ public Dataset Map(PXModel model, string id, string language)
//Variable notes
AddVariableNotes(variable, dataset, dimensionValue);

//MetaID
CollectMetaIdsForVariable(variable, ref metaIdsHelper);

if (metaIdsHelper.Count > 0)
{
dataset.AddDimensionLink(dimensionValue, metaIdsHelper);
}


//Codelists
var codeLists = new System.Collections.Generic.List<CodeListInformation>();
MapCodelists(codeLists, variable);
if (codeLists != null)
{
dataset.AddCodelist(dimensionValue, codeLists);
}


dataset.Size.Add(variable.Values.Count);
dataset.Id.Add(variable.Code);

Expand All @@ -134,7 +137,7 @@ public Dataset Map(PXModel model, string id, string language)
AddTableNotes(model, dataset);

List<Link> linksOnRoot = new List<Link>();
linksOnRoot.Add(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.self, id.ToUpper(), language, true));
linksOnRoot.AddRange(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.self, id.ToUpper(), language, true));
linksOnRoot.Add(_linkCreator.GetTableDataLink(LinkCreator.LinkRelationEnum.data, id.ToUpper(), language, true));

//"type": "application/json"
Expand Down Expand Up @@ -182,7 +185,14 @@ private void AddUpdated(PXModel model, DatasetSubclass dataset)
.FirstOrDefault();

// ReSharper disable once PossibleNullReferenceException
tempDateTime = lastUpdatedContentsVariable.ContentInfo.LastUpdated.PxDateStringToDateTime();
if (lastUpdatedContentsVariable != null)
{
tempDateTime = lastUpdatedContentsVariable.ContentInfo.LastUpdated.PxDateStringToDateTime();
}
else
{
tempDateTime = model.Meta.CreationDate.PxDateStringToDateTime();
}
}
else if (model.Meta.ContentInfo.LastUpdated != null)
{
Expand Down
2 changes: 1 addition & 1 deletion PxWeb/Mappers/FolderResponseMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ private Table MapTable(TableLink child)
table.Links.Add(_linkCreator.GetTableLink(LinkCreator.LinkRelationEnum.self, tableId, _language, true));

// Links to metadata
table.Links.Add(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.metadata, tableId, _language, true));
table.Links.AddRange(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.metadata, tableId, _language, true));

// Links to data
table.Links.Add(_linkCreator.GetTableDataLink(LinkCreator.LinkRelationEnum.data, tableId, _language, true));
Expand Down
2 changes: 1 addition & 1 deletion PxWeb/Mappers/ILinkCreator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public interface ILinkCreator
{
Link GetTablesLink(LinkRelationEnum relation, string language, string? query, int pagesize, int pageNumber, bool showLangParam = true);
Link GetTableLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true);
Link GetTableMetadataJsonLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true);
List<Link> GetTableMetadataJsonLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true);
Link GetTableDataLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true);
Link GetCodelistLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true);
Link GetFolderLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true);
Expand Down
49 changes: 37 additions & 12 deletions PxWeb/Mappers/LinkCreator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,14 @@ public enum LinkRelationEnum
}

private readonly string _urlBase;
private readonly string _defaultDataFormat;
private readonly List<string> _metaFormats = new List<string> { "json-px", "json-stat2" };
//Could not get the strings cleanly from MetadataOutputFormatType. Anybody?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Challenge excepted, but I failed 😭


public LinkCreator(IOptions<PxApiConfigurationOptions> configOptions)
{
_urlBase = configOptions.Value.BaseURL;
_defaultDataFormat = configOptions.Value.DefaultOutputFormat;
}
public Link GetTablesLink(LinkRelationEnum relation, string language, string? query, int pagesize, int pageNumber, bool showLangParam = true)
{
Expand All @@ -40,27 +44,34 @@ public Link GetTableLink(LinkRelationEnum relation, string id, string language,
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;
link.Href = CreateURL($"tables/{id}", language, showLangParam);
link.Href = CreateURL($"tables/{id}", language, showLangParam, null);

return link;
}

public Link GetTableMetadataJsonLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true)
public List<Link> GetTableMetadataJsonLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true)
{
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;
link.Href = CreateURL($"tables/{id}/metadata", language, showLangParam);
List<Link> links = new List<Link>();

return link;
foreach (string outFormat in _metaFormats)
{
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;

link.Href = CreateURL($"tables/{id}/metadata", language, showLangParam, outFormat);
links.Add(link);
}

return links;
}

public Link GetTableDataLink(LinkRelationEnum relation, string id, string language, bool showLangParam = true)
{
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;
link.Href = CreateURL($"tables/{id}/data", language, showLangParam);
link.Href = CreateURL($"tables/{id}/data", language, showLangParam, _defaultDataFormat);

return link;
}
Expand All @@ -70,7 +81,7 @@ public Link GetCodelistLink(LinkRelationEnum relation, string id, string languag
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;
link.Href = CreateURL($"codeLists/{id}", language, showLangParam);
link.Href = CreateURL($"codeLists/{id}", language, showLangParam, null);

return link;
}
Expand All @@ -80,7 +91,7 @@ public Link GetDefaultSelectionLink(LinkRelationEnum relation, string id, string
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;
link.Href = CreateURL($"tables/{id}/defaultselection", language, showLangParam);
link.Href = CreateURL($"tables/{id}/defaultselection", language, showLangParam, null);

return link;
}
Expand All @@ -90,11 +101,11 @@ public Link GetFolderLink(LinkRelationEnum relation, string id, string language,
var link = new Link();
link.Rel = relation.ToString();
link.Hreflang = language;
link.Href = CreateURL($"navigation/{id}", language, showLangParam);
link.Href = CreateURL($"navigation/{id}", language, showLangParam, null);

return link;
}
private string CreateURL(string endpointUrl, string language, bool showLangParam)
private string CreateURL(string endpointUrl, string language, bool showLangParam, string? outputFormat)
{
StringBuilder sb = new StringBuilder();

Expand All @@ -108,6 +119,20 @@ private string CreateURL(string endpointUrl, string language, bool showLangParam
sb.Append(language);
}

if (!string.IsNullOrEmpty(outputFormat))
{
if (showLangParam)
{
sb.Append('&');
}
else
{
sb.Append('?');
}
sb.Append("outputFormat=");
sb.Append(outputFormat);
}

return sb.ToString();
}
private string CreatePageURL(string endpointUrl, string language, bool showLangParam, string? query, int pagesize, int pageNumber)
Expand Down
6 changes: 5 additions & 1 deletion PxWeb/Mappers/TableMetadataResponseMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public TableMetadataResponse Map(PXModel model, string id, string language)
tm.Links = new System.Collections.Generic.List<Link>();

// Links to metadata
tm.Links.Add(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.self, id.ToUpper(), language, true));
tm.Links.AddRange(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.self, id.ToUpper(), language, true));

// Links to data
tm.Links.Add(_linkCreator.GetTableDataLink(LinkCreator.LinkRelationEnum.data, id.ToUpper(), language, true));
Expand Down Expand Up @@ -505,6 +505,10 @@ private string GetLastTimePeriod(Variable variable)

private ContentValue.MeasuringTypeEnum GetMeasuringType(string stockfa)
{
if (stockfa == null)
{
return ContentValue.MeasuringTypeEnum.OtherEnum;
}
switch (stockfa.ToUpper())
{
case "S":
Expand Down
2 changes: 1 addition & 1 deletion PxWeb/Mappers/TableResponseMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public TableResponse Map(SearchResult searchResult, string lang)
linkList.Add(_linkCreator.GetTableLink(LinkCreator.LinkRelationEnum.self, searchResult.Id.ToUpper(), lang, true));

// Links to metadata
linkList.Add(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.metadata, searchResult.Id.ToUpper(), lang, true));
linkList.AddRange(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.metadata, searchResult.Id.ToUpper(), lang, true));

// Links to data
linkList.Add(_linkCreator.GetTableDataLink(LinkCreator.LinkRelationEnum.data, searchResult.Id.ToUpper(), lang, true));
Expand Down
2 changes: 1 addition & 1 deletion PxWeb/Mappers/TablesResponseMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public TablesResponse Map(SearchResultContainer searchResultContainer, string la
linkList.Add(_linkCreator.GetTableLink(LinkCreator.LinkRelationEnum.self, item.Id.ToUpper(), lang, true));

// Links to metadata
linkList.Add(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.metadata, item.Id.ToUpper(), lang, true));
linkList.AddRange(_linkCreator.GetTableMetadataJsonLink(LinkCreator.LinkRelationEnum.metadata, item.Id.ToUpper(), lang, true));

// Links to data
linkList.Add(_linkCreator.GetTableDataLink(LinkCreator.LinkRelationEnum.data, item.Id.ToUpper(), lang, true));
Expand Down
2 changes: 1 addition & 1 deletion PxWeb/Models/Api2/DatasetSubclass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ public void AddLinksOnRoot(List<Link> links)
{
if (link.Rel == "self")
{
this.Href = link.Href + "&outputFormat=json-stat2";
this.Href = link.Href;
}
else
{
Expand Down
50 changes: 0 additions & 50 deletions PxWebApi.BigTests/ConfigController/ConfigApiControllerTest.cs
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could have git moved these files to keep the history

This file was deleted.

Loading