Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Процес оновлення та збереження даних

РефератДопомога в написанніДізнатися вартістьмоєї роботи

String URI = String. Format («{0}stream/contents?output=json&xt=user/-/state/com.google/read&n={2}&s={1}», APIEndPoint, «user/-/state/com.google/reading-list», ItemCount); String URI = String. Format («{0}stream/contents?output=json&xt=user/-/state/com.google/read&n={2}&s={1}», APIEndPoint, «user/-/state/com.google/starred», 1000); String URI = String. Format… Читати ще >

Процес оновлення та збереження даних (реферат, курсова, диплом, контрольна)

Враховуючи описане вище, оновлення та збереження даних проходить у 3 етапи:

Отримання списку тегів (папок) Отримання підписок для кожного тега Отримання записів для кожної підписки Справ в тому, що самі записи не містять у собі інформації до якого тегу вони належать, також там не має інформації про відмітки Starred, Liked, що також треба враховувати. Тому при отриманні записів з підписок ми рекурсивно записуємо в БД записи та присвоюємо їм ідентифікатор тега та підписки, для того щоб в подальшому користувач мав змогу фільтрації даних за цими параметрами.

Після цього з’являєтеся вся необхідна інформація для збереження даних в локальну БД та відображення їх користувачу.

Інструкція для користувача

Перед використанням додатку необхідно зареєструватися на сайті http://www.theoldreader.com. При першому запуску додатку буде запропоновано ввести ваш логін та пароль.

Вікно вводу логіна та пароля.

Рис. 3.3. Вікно вводу логіна та пароля

Після авторизації додаток оновить усі, існуючі в профілі, користувача підписки, та надалі буде автоматично слідкувати за їх оновленням, а у разі появи нових записів повідомить про це користувача за допомогою центру повідомлень Windows 10 та позначкою на плитці додатку.

Робоче вікно програми.

Рис. 3.4. Робоче вікно програми

Робоче вікно програми на мобільному пристрої.

Рис. 3.5. Робоче вікно програми на мобільному пристрої

Також у користувача є можливість відмітити всі нові записи прочитаними, та оновити всі підписки вручну як видно на рис. 2.

Панель зліва дозволяє перемикатися між теками користувача (всі записи, обрані, улюблені). Натиснувши на кнопку з трьома горизонтальними лініями зверху, панель розшириться та покаже підписи до всіх кнопок що на ній знаходяться, див. рис. 3.

Робоче вікно програми з розгорнутою панеллю.

Рис. 3.6. Робоче вікно програми з розгорнутою панеллю

Рис. 3.7. Робоче вікно програми з розгорнутою панеллю на мобільному пристрої

Натиснувши на новину вона відкриється в головному вікні з повним її змістом і автоматично буде помічена як прочитана, також з’являться кнопки для додавання цієї новини в улюблені або в обрані записи за допомогою кнопок на верхній панелі.

Рис. 3.8. Робоче вікно з контентом новини

Робоче вікно з контентом новини на мобільному пристрої.
Процес оновлення та збереження даних.
Рис. 3.9. Робоче вікно з контентом новини на мобільному пристрої.

Рис. 3.9. Робоче вікно з контентом новини на мобільному пристрої

Вихідний код програмного продукту Клас для роботи з API сервера:

using System;

using System.Collections.Generic;

using System. IO;

using System. Linq;

using System.Net;

using System.Net.Http;

using System.Net.Http.Headers;

using System. Text;

using System.Threading.Tasks;

using Windows.UI.Popups;

namespace TheOldReader_WinX.

{.

class TheOldReader.

{.

private const String APIEndPoint = «https://theoldreader.com/reader/api/0/» ;

private string _token;

public string token.

{.

get { return _token; }.

set { _token = «GoogleLogin auth=» + value; }.

}.

public async Task LogIn (string user, string pwd).

{.

var output = await Post («https://theoldreader.com/reader/api/0/accounts/ClientLogin» ,.

String.Format («client=TheOldReaderWX&accountType=HOSTED_OR_GOOGLE&service=reader&Email={0}&Passwd={1}», user, pwd));

try.

{.

token = output. Substring (output.IndexOf («Auth=»)).Replace (" Auth=", «»);

return true;

}.

catch.

{.

return false;

}.

}.

private async Task Post (String URI, String _PostData).

{.

var client = new HttpClient ();

client.DefaultRequestHeaders.TryAddWithoutValidation («Authorization: «, token);

HttpResponseMessage wcfResponse = await client. PostAsync (new Uri (URI), new StringContent (_PostData, Encoding. UTF8, «application/x-www-form-urlencoded»));

return await wcfResponse.Content.ReadAsStringAsync ();

}.

private async Task Get (String URI).

{.

var client = new HttpClient ();

client.BaseAddress = new Uri (URI);

client.DefaultRequestHeaders.TryAddWithoutValidation («Authorization: «, token);

return await client. GetStringAsync (URI);

}.

#region Params.

public async Task getTagList ().

{.

String API = «tag/list?output=json» ;

String URI = APIEndPoint + API;

return await Get (URI);

}.

public async Task getSubscriptionList ().

{.

String API = «subscription/list?output=json» ;

String URI = APIEndPoint + API;

return await Get (URI);

}.

public async Task getUnreadCount ().

{.

String API = «unread-count?output=json» ;

String URI = APIEndPoint + API;

return await Get (URI);

}.

public async Task getUserInfo ().

{.

String API = «user-info?output=json» ;

String URI = APIEndPoint + API;

return await Get (URI);

}.

public async Task getMoreItemsForSubscription (String SubName, int ItemCount, String Continuation).

{.

String URI = String. Format («{0}stream/contents?output=json&n={2}&c={3}&s={1}», APIEndPoint, SubName, ItemCount, Continuation);

return await Get (URI);

}.

public async Task getItemsForSubscription (String SubName, int ItemCount).

{.

String URI = String. Format («{0}stream/contents?output=json&n={2}&s={1}», APIEndPoint, SubName, ItemCount);

return await Get (URI);

}.

public async Task getUnreadItemsForSubscription (String SubName, int ItemCount).

{.

String URI = String. Format («{0}stream/contents?output=json&xt=user/-/state/com.google/read&n={2}&s={1}», APIEndPoint, SubName, ItemCount);

return await Get (URI);

}.

//Получить все непрочитанные записи.

public async Task getAllUnreadItems (int ItemCount).

{.

String URI = String. Format («{0}stream/contents?output=json&xt=user/-/state/com.google/read&n={2}&s={1}», APIEndPoint, «user/-/state/com.google/reading-list», ItemCount);

return await Get (URI);

}.

//Получить все избранные записи.

public async Task getStarredItems ().

{.

String URI = String. Format («{0}stream/contents?output=json&xt=user/-/state/com.google/read&n={2}&s={1}», APIEndPoint, «user/-/state/com.google/starred», 1000);

return await Get (URI);

}.

//Получить все понравившиеся записи.

public async Task getLikedItems ().

{.

String URI = String. Format («{0}stream/contents?output=json&xt=user/-/state/com.google/read&n={2}&s={1}», APIEndPoint, «user/-/state/com.google/like», 1000);

return await Get (URI);

}.

//Отметить запись прочитанной.

public async Task markFeedItemRead (string ItemId, bool bRead).

{.

String PostData = String. Format («{0}=user/-/state/com.google/read&i={1}», bRead? «a»: «r», ItemId);

return await Post (APIEndPoint + «edit-tag», PostData);

}.

//Отметить все прочитанными.

public async Task markAllItemsAsRead (string FeedId).

{.

String PostData = String. Format («s={0}», FeedId);

return await Post (APIEndPoint + «mark-all-as-read», PostData);

}.

//Отметить несколько записей прочитанными.

public async Task markFeedItemsRead (List ItemIds, bool Read).

{.

return await changeTagOfItems («user/-/state/com.google/read», ItemIds, Read);

}.

//Отметить звездочкой.

public async Task starItem (string FeedId, bool Starred).

{.

String szPostData = String. Format («{0}={2}&i={1}», Starred? «a»: «r», FeedId, «user/-/state/com.google/starred»);

return await Post (APIEndPoint + «edit-tag», szPostData);

}.

//Отметить звездочкой несколько записей.

public async Task starItems (List FeedIds, bool Starred).

{.

return await changeTagOfItems («user/-/state/com.google/starred», FeedIds, Starred);

}.

//Изменить тег нескольких записей.

private async Task changeTagOfItems (string TagName, List FeedIds, bool Add).

{.

if (FeedIds ≠ null && FeedIds. Count > 0).

{.

StringBuilder sb = new StringBuilder ();

sb.AppendFormat («{0}={1}», Add? «a»: «r», TagName);

foreach (String curItemId in FeedIds).

sb.AppendFormat («&i={0}», curItemId);

String PostData = sb. ToString ();

return await Post (APIEndPoint + «edit-tag», PostData);

}.

return «» ;

}.

//Переметить подписку в папку.

public async Task moveSubscriptionToFolder (string feedId, string folderId).

{.

String PostData = «» ;

if (!String.IsNullOrEmpty (folderId) && folderId ≠ «user/-/state/com.google/reading-list»).

PostData = String. Format («ac=edit&s={0}&a={1}», feedId, folderId);

else.

PostData = String. Format («ac=edit&s={0}&r={1}», feedId, folderId);

return await Post (APIEndPoint + «subscription/edit», PostData);

}.

//Подписаться.

public async Task addSubscription (string FeedUrl).

{.

String PostData = «» ;

return await Post (APIEndPoint + «subscription/quickadd?quickadd=» + FeedUrl, PostData);

}.

//Отписаться.

public async Task unsubscribe (string feedId).

{.

String PostData = String. Format («ac=unsubscribe&s={0}», feedId);

return await Post (APIEndPoint + «subscription/edit», PostData);

}.

#endregion.

Отже даний додаток використовує найновіші функції UWP, його можна завантажити з магазина на ПК, телефон чи телевізор з Windows 10 і він буде виглядати та працювати на цих пристроях саме так як очікує того користувач.

Показати весь текст
Заповнити форму поточною роботою