Browse Source

Update the Twitter provider to request all known expansions/tweet fields/user fields when communicating with the userinfo endpoint

pull/1473/head
Kévin Chalet 4 years ago
parent
commit
51e1a34b55
  1. 39
      gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs
  2. 43
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xml
  3. 2
      src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xsd

39
gen/OpenIddict.Client.WebIntegration.Generators/OpenIddictClientWebIntegrationGenerator.cs

@ -238,40 +238,48 @@ public partial class OpenIddictClientWebIntegrationConfiguration
{{~ for environment in provider.environments ~}}
if (settings.Environment is OpenIddictClientWebIntegrationEnvironments.{{ provider.name }}.{{ environment.name }})
{
{{~ for scope in environment.scopes ~}}
{{~ if scope.required ~}}
settings.Scopes.Add(""{{ scope.name }}"");
{{~ end ~}}
{{~ if scope.default ~}}
if (settings.Scopes.Count is 0)
{
{{~ for scope in environment.scopes ~}}
{{~ if scope.default && !scope.required ~}}
settings.Scopes.Add(""{{ scope.name }}"");
{{~ end ~}}
{{~ end ~}}
}
{{~ for scope in environment.scopes ~}}
{{~ if scope.required ~}}
settings.Scopes.Add(""{{ scope.name }}"");
{{~ end ~}}
{{~ end ~}}
}
{{~ end ~}}
{{~ for setting in provider.settings ~}}
{{~ if setting.default_value ~}}
{{~ if setting.default_value && setting.type == 'String' ~}}
if (string.IsNullOrEmpty(settings.{{ setting.name }}))
{
settings.{{ setting.name }} = ""{{ setting.default_value }}"";
}
{{~ end ~}}
{{~ for item in setting.collection_items ~}}
{{~ if item.required ~}}
settings.{{ setting.name }}.Add(""{{ item.value }}"");
{{~ end ~}}
{{~ if item.default ~}}
{{~ for setting in provider.settings ~}}
{{~ if setting.collection ~}}
if (settings.{{ setting.name }}.Count is 0)
{
{{~ for item in setting.collection_items ~}}
{{~ if item.default && !item.required ~}}
settings.{{ setting.name }}.Add(""{{ item.value }}"");
{{~ end ~}}
{{~ end ~}}
}
{{~ end ~}}
{{~ for item in setting.collection_items ~}}
{{~ if item.required ~}}
settings.{{ setting.name }}.Add(""{{ item.value }}"");
{{~ end ~}}
{{~ end ~}}
{{~ end ~}}
@ -482,6 +490,7 @@ public partial class OpenIddictClientWebIntegrationConfiguration
Name = (string) setting.Attribute("Name"),
Type = (string) setting.Attribute("Type"),
Required = (bool?) setting.Attribute("Required") ?? false,
Collection = (bool?) setting.Attribute("Collection") ?? false,
EncryptionAlgorithm = (string?) setting.Element("EncryptionAlgorithm")?.Attribute("Value"),
SigningAlgorithm = (string?) setting.Element("SigningAlgorithm")?.Attribute("Value"),
@ -562,9 +571,9 @@ public partial class OpenIddictClientWebIntegrationSettings
/// </summary>
{{~ end ~}}
{{~ if setting.collection ~}}
public HashSet<{{ setting.type }}> {{ setting.name }} { get; } = new();
public HashSet<{{ setting.clr_type }}> {{ setting.name }} { get; } = new();
{{~ else ~}}
public {{ setting.type }}? {{ setting.name }} { get; set; }
public {{ setting.clr_type }}? {{ setting.name }} { get; set; }
{{~ end ~}}
{{~ end ~}}
@ -588,7 +597,7 @@ public partial class OpenIddictClientWebIntegrationSettings
Name = (string) setting.Attribute("Name"),
Collection = (bool?) setting.Attribute("Collection") ?? false,
Description = (string) setting.Attribute("Description"),
Type = (string) setting.Attribute("Type") switch
ClrType = (string) setting.Attribute("Type") switch
{
"EncryptionKey" when (string) setting.Element("EncryptionAlgorithm").Attribute("Value")
is "RS256" or "RS384" or "RS512" => "RsaSecurityKey",

43
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xml

@ -85,14 +85,49 @@
</Environment>
<Setting Name="Expansions" Collection="true" Type="String"
Description="Gets the list of data objects to expand from the userinfo endpoint." />
Description="Gets the list of data objects to expand from the userinfo endpoint (by default, all known expansions are requested).">
<CollectionItem Value="pinned_tweet_id" Default="true" Required="false" />
</Setting>
<Setting Name="TweetFields" Collection="true" Type="String"
Description="Gets the tweet fields that should be retrieved from the userinfo endpoint." />
Description="Gets the tweet fields that should be retrieved from the userinfo endpoint (by default, all known tweet fields are requested).">
<CollectionItem Value="attachments" Default="true" Required="false" />
<CollectionItem Value="author_id" Default="true" Required="false" />
<CollectionItem Value="context_annotations" Default="true" Required="false" />
<CollectionItem Value="conversation_id" Default="true" Required="false" />
<CollectionItem Value="created_at" Default="true" Required="false" />
<CollectionItem Value="entities" Default="true" Required="false" />
<CollectionItem Value="geo" Default="true" Required="false" />
<CollectionItem Value="id" Default="true" Required="false" />
<CollectionItem Value="in_reply_to_user_id" Default="true" Required="false" />
<CollectionItem Value="lang" Default="true" Required="false" />
<CollectionItem Value="non_public_metrics" Default="true" Required="false" />
<CollectionItem Value="public_metrics" Default="true" Required="false" />
<CollectionItem Value="organic_metrics" Default="true" Required="false" />
<CollectionItem Value="promoted_metrics" Default="true" Required="false" />
<CollectionItem Value="possibly_sensitive" Default="true" Required="false" />
<CollectionItem Value="referenced_tweets" Default="true" Required="false" />
<CollectionItem Value="reply_settings" Default="true" Required="false" />
<CollectionItem Value="source" Default="true" Required="false" />
<CollectionItem Value="text" Default="true" Required="false" />
<CollectionItem Value="withheld" Default="true" Required="false" />
</Setting>
<Setting Name="UserFields" Collection="true" Type="String"
Description="Gets the user fields that should be retrieved from the userinfo endpoint.">
<CollectionItem Value="profile_image_url" Default="true" Required="false" />
Description="Gets the user fields that should be retrieved from the userinfo endpoint (by default, all known user fields are requested).">
<CollectionItem Value="created_at" Default="true" Required="false" />
<CollectionItem Value="description" Default="true" Required="false" />
<CollectionItem Value="entities" Default="true" Required="false" />
<CollectionItem Value="id" Default="true" Required="false" />
<CollectionItem Value="location" Default="true" Required="false" />
<CollectionItem Value="name" Default="true" Required="false" />
<CollectionItem Value="pinned_tweet_id" Default="true" Required="false" />
<CollectionItem Value="protected" Default="true" Required="false" />
<CollectionItem Value="public_metrics" Default="true" Required="false" />
<CollectionItem Value="url" Default="true" Required="false" />
<CollectionItem Value="username" Default="true" Required="false" />
<CollectionItem Value="verified" Default="true" Required="false" />
<CollectionItem Value="withheld" Default="true" Required="false" />
</Setting>
</Provider>

2
src/OpenIddict.Client.WebIntegration/OpenIddictClientWebIntegrationProviders.xsd

@ -241,7 +241,7 @@
<xs:complexType>
<xs:sequence>
<xs:element name="CollectionItem" minOccurs="0" maxOccurs="1">
<xs:element name="CollectionItem" minOccurs="0" maxOccurs="50">
<xs:annotation>
<xs:documentation>An item added by default to the collection, if applicable.</xs:documentation>
</xs:annotation>

Loading…
Cancel
Save