示例#1
0
    public Task <DataWrapper <List <TermsEntry> > > GetAllTermsAsync(string language)
    {
        if (string.IsNullOrWhiteSpace(language))
        {
            throw new ArgumentException("No string received", nameof(language));
        }

        var request = new RestRequest("api/v2/content/terms", Method.Get);

        request.AddHeader("Accept-Language", language);

        return(_repository.DoRequestAsync <DataWrapper <List <TermsEntry> > >(request));
    }
示例#2
0
    public async Task <DataAppOpenWrapper> AppOpenAsync <TSection>(NStackPlatform platform,
                                                                   Guid userId,
                                                                   string version,
                                                                   string environment          = "production",
                                                                   bool developmentEnvironment = false,
                                                                   bool productionEnvironment  = true) where TSection : ResourceItem, new()
    {
        if (string.IsNullOrWhiteSpace(version) && (platform != NStackPlatform.Web || platform != NStackPlatform.Backend))
        {
            throw new ArgumentException("Version is required on all platforms except web", nameof(version));
        }

        if (productionEnvironment && developmentEnvironment)
        {
            throw new ArgumentException($"{nameof(productionEnvironment)} and {nameof(developmentEnvironment)} can't both be true");
        }

        var request = new RestRequest("api/v2/open", Method.Post);

        request.AddHeader("N-Meta", $"{GetPlatformString(platform)};{environment};");

        request.AddStringBody($"platform={GetPlatformString(platform)}&guid={userId}&version={version}&old_version={GetOldVersion(version)}&last_updated={GetLastUpdatedString()}&dev={developmentEnvironment}&test={!productionEnvironment}", "application/x-www-form-urlencoded");

        var response = await _repository.DoRequestAsync <DataAppOpenWrapper>(request);

        if (response == null)
        {
            return(new DataAppOpenWrapper());
        }

        _memoryCache.Set <DateTime>(LastUpdatedCacheKey, DateTime.UtcNow);
        _memoryCache.Set <string>(OldVersionCacheKey, version);

        // Fetch and store all updated localizations into the memory
        IEnumerable <Task <DataMetaWrapper <TSection> > > localizationFetches = response.Data.Localize.Where(l => l.ShouldUpdate).Select(GetLocalizationAsync <TSection>);

        await Task.WhenAll(localizationFetches);

        return(response);
    }
示例#3
0
    public Task <DataWrapper <List <ResourceData> > > GetLanguagesAsync(NStackPlatform platform)
    {
        var req = new RestRequest($"api/v2/content/localize/resources/platforms/{platform.ToString().ToLower()}");

        return(_repository.DoRequestAsync <DataWrapper <List <ResourceData> > >(req));
    }