eksi-sozluk
Version:
Eksi Sozluk NodeJS client.
794 lines (707 loc) • 54.8 kB
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>EksiMember.js - Documentation</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger" class="navicon-button x">
<div class="navicon"></div>
</label>
<label for="nav-trigger" class="overlay"></label>
<nav>
<li class="nav-link nav-home-link"><a href="index.html">Home</a></li><li class="nav-heading">Tutorials</li><li class="nav-item"><a href="tutorial-01-getting-started.html">Getting Started</a></li><li class="nav-item"><a href="tutorial-02-profile.html">Profile</a></li><li class="nav-item"><a href="tutorial-03-trash.html">Trash</a></li><li class="nav-item"><a href="tutorial-04-account.html">Account</a></li><li class="nav-item"><a href="tutorial-05-titles.html">Titles</a></li><li class="nav-item"><a href="tutorial-06-entries-and-drafts.html">Entries & Drafts</a></li><li class="nav-item"><a href="tutorial-07-users.html">Users</a></li><li class="nav-item"><a href="tutorial-08-tags.html">Tags</a></li><li class="nav-item"><a href="tutorial-09-upload-and-delete-image.html">Upload & Delete Image</a></li><li class="nav-item"><a href="tutorial-10-questions.html">Questions</a></li><li class="nav-item"><a href="tutorial-11-miscellaneous.html">Miscellaneous</a></li><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="AuthError.html">AuthError</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="CollectionBase.html">CollectionBase</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="CollectionBase.html#first">first</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="CollectionBase.html#last">last</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="CollectionBase.html#next">next</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="CollectionBase.html#prev">prev</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="DraftEntry.html">DraftEntry</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DraftEntry.html#change">change</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DraftEntry.html#dismiss">dismiss</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DraftEntry.html#publish">publish</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="DraftEntry.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="DraftTitle.html">DraftTitle</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="EksiMember.html">EksiMember</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#agenda">agenda</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#cancelEmailAddressChange">cancelEmailAddressChange</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#changeEmailAddress">changeEmailAddress</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#changeLoginUsername">changeLoginUsername</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#changePassword">changePassword</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#createBackup">createBackup</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#createEntry">createEntry</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#debeEntries">debeEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#deleteAccount">deleteAccount</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#deleteImage">deleteImage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#drafts">drafts</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#emptyTrash">emptyTrash</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#entries">entries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#entryById">entryById</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#events">events</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#followedUserFavoriteEntries">followedUserFavoriteEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#followedUserTitles">followedUserTitles</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#isEmailAddressInChangeStatus">isEmailAddressInChangeStatus</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#isNewEventExist">isNewEventExist</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#isNewMessageExist">isNewMessageExist</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#me">me</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#pinEntry">pinEntry</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#questionsInAgenda">questionsInAgenda</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#questionsInToday">questionsInToday</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#removePin">removePin</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#retrieve">retrieve</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#rookieTitles">rookieTitles</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#search">search</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#tags">tags</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#titlesByTag">titlesByTag</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#today">today</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#todayInHistory">todayInHistory</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#trashEntries">trashEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#untaggedTitles">untaggedTitles</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#uploadImage">uploadImage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiMember.html#user">user</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="EksiSozluk.html">EksiSozluk</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#agenda">agenda</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#createToken">createToken</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#debeEntries">debeEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#entries">entries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#entryById">entryById</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#isAuthenticated">isAuthenticated</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#isRecaptchaRequired">isRecaptchaRequired</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#login">login</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#loginWithToken">loginWithToken</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#questionsInAgenda">questionsInAgenda</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#questionsInToday">questionsInToday</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#search">search</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#tags">tags</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#titlesByTag">titlesByTag</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#todayInHistory">todayInHistory</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#untaggedTitles">untaggedTitles</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EksiSozluk.html#user">user</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Entry.html">Entry</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="Entry.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="EntryCollection.html">EntryCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryCollection.html#createEntry">createEntry</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryCollection.html#first">first</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryCollection.html#last">last</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryCollection.html#next">next</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryCollection.html#prev">prev</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryCollection.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="EntryForMember.html">EntryForMember</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#deleteFromTrash">deleteFromTrash</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#downvote">downvote</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#favorite">favorite</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#listFavoritedAuthors">listFavoritedAuthors</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#listFavoritedRookies">listFavoritedRookies</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#recoverFromTrash">recoverFromTrash</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#removevote">removevote</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#retrieve">retrieve</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#unfavorite">unfavorite</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="EntryForMember.html#upvote">upvote</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="FollowedUserFavoriteEntry.html">FollowedUserFavoriteEntry</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="FollowedUserTitle.html">FollowedUserTitle</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Image.html">Image</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="ImageCollection.html">ImageCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="ImageCollection.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="NotFoundError.html">NotFoundError</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Question.html">Question</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="SearchResults.html">SearchResults</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="SearchResults.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Tag.html">Tag</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="TagForMember.html">TagForMember</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TagForMember.html#follow">follow</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TagForMember.html#unfollow">unfollow</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="Title.html">Title</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="TitleCollection.html">TitleCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TitleCollection.html#first">first</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TitleCollection.html#last">last</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TitleCollection.html#next">next</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TitleCollection.html#prev">prev</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TitleCollection.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="TrashEntry.html">TrashEntry</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#deleteFromTrash">deleteFromTrash</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#downvote">downvote</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#favorite">favorite</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#listFavoritedAuthors">listFavoritedAuthors</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#listFavoritedRookies">listFavoritedRookies</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#recoverFromTrash">recoverFromTrash</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#removevote">removevote</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#retrieve">retrieve</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#unfavorite">unfavorite</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="TrashEntry.html#upvote">upvote</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="UkteCollection.html">UkteCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UkteCollection.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="User.html">User</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#entries">entries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#favoriteAuthors">favoriteAuthors</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#favoritedEntries">favoritedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#favorites">favorites</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#images">images</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#lastVotedEntries">lastVotedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#mostLikedEntries">mostLikedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#retrieve">retrieve</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#selfFavoritedEntries">selfFavoritedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="User.html#ukteler">ukteler</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="UserEntryCollection.html">UserEntryCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserEntryCollection.html#first">first</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserEntryCollection.html#last">last</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserEntryCollection.html#next">next</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserEntryCollection.html#prev">prev</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserEntryCollection.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="UserFavoriteAuthorCollection.html">UserFavoriteAuthorCollection</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserFavoriteAuthorCollection.html#retrieve">retrieve</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="UserForMember.html">UserForMember</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#block">block</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#blockTitles">blockTitles</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#clearNote">clearNote</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#entries">entries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#favoriteAuthors">favoriteAuthors</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#favoritedEntries">favoritedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#favorites">favorites</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#follow">follow</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#images">images</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#lastVotedEntries">lastVotedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#mostLikedEntries">mostLikedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#retrieve">retrieve</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#selfFavoritedEntries">selfFavoritedEntries</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#sendMessage">sendMessage</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#setNote">setNote</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#ukteler">ukteler</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#unblock">unblock</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#unblockTitles">unblockTitles</a></span></li><li class="nav-item"><span class="nav-item-type type-function">F</span><span class="nav-item-name"><a href="UserForMember.html#unfollow">unfollow</a></span></li><li class="nav-heading"><span class="nav-item-type type-class">C</span><span class="nav-item-name"><a href="VoteError.html">VoteError</a></span></li><li class="nav-heading"><a href="global.html">Globals</a></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#COLLECTION_TYPES">COLLECTION_TYPES</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#TAGS">TAGS</a></span></li><li class="nav-item"><span class="nav-item-type type-member">M</span><span class="nav-item-name"><a href="global.html#TITLE_TYPES">TITLE_TYPES</a></span></li>
</nav>
<div id="main">
<h1 class="page-title">EksiMember.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>const axios = require('axios')
const qs = require('querystring')
const setCookie = require('set-cookie-parser')
const fs = require('fs')
const FormData = require('form-data')
const EksiGuest = require('./EksiGuest')
const { URLS } = require('./constants')
const { TITLE_TYPES } = require('./enums')
const { tags, trashEntries, debeEntries, createEntry } = require('./lib')
const {
EntryForMember,
UserForMember,
TitleCollection,
EntryCollection,
SearchResults,
TrashEntry,
TagForMember,
DraftEntry
} = require('./models')
/**
* Eksi Sozluk member class.
*
* @augments EksiGuest
*/
class EksiMember extends EksiGuest {
/**
* Username.
*
* @type {string}
*/
username
/**
* Is new message available?
*
* @type {boolean}
*/
isNewMessageAvailable
/**
* Is new event available?
*
* @type {boolean}
*/
isNewEventAvailable
/**
* Create an Eksi Sozluk member session.
*
* @param {object} httpClient Axios HTTP client.
* @param {string} cookies Cookies in string.
*/
constructor (httpClient, cookies) {
super(httpClient)
this.cookies = cookies
}
/**
* Retrieve the user.
*
* @returns {Promise} Promise.
*/
retrieve () {
return new Promise((resolve, reject) => {
axios({
url: URLS.BASE,
method: 'GET',
headers: {
cookie: this.cookies
}
}).then(res => {
const newMessageRegex = /href="\/mesaj"\n*\s*class="new-update"/g
const isNewMessageAvailable = newMessageRegex.test(res.data)
this.isNewMessageAvailable = isNewMessageAvailable
const newEventRegex = /title="olaylar olaylar"\n*\s*class="new-update"/g
const isNewEventAvailable = newEventRegex.test(res.data)
this.isNewEventAvailable = isNewEventAvailable
const usernameRegex = new RegExp(
'(?<=a href="/biri/)(.*)(?=" title=")',
'u'
)
const username = usernameRegex.exec(res.data)[0]
this.username = username
resolve()
})
})
}
/**
* Search things.
*
* @param {string} text Search text.
* @returns {Promise.<SearchResults>} A promise for the search results.
*/
async search (text) {
const results = new SearchResults(this._request, text, this.cookies)
await results.retrieve()
return results
}
/**
* Check if unread message exist.
*
* @returns {Promise.<boolean>} New message available or not.
*/
isNewMessageExist () {
return new Promise((resolve, reject) => {
axios({
url: URLS.BASE,
method: 'GET',
headers: {
cookie: this.cookies
}
}).then(res => {
const regex = /href="\/mesaj"\n*\s*class="new-update"/g
const isNewMessageAvailable = regex.test(res.data)
this.isNewMessageAvailable = isNewMessageAvailable
resolve(isNewMessageAvailable)
})
})
}
/**
* Check if unread event exist.
*
* @returns {Promise.<boolean>} New event available or not.
*/
isNewEventExist () {
return new Promise((resolve, reject) => {
axios({
url: URLS.BASE,
method: 'GET',
headers: {
cookie: this.cookies
}
}).then(res => {
const regex = /title="olaylar olaylar"\n*\s*class="new-update"/g
const isNewEventAvailable = regex.test(res.data)
this.isNewEventAvailable = isNewEventAvailable
resolve(isNewEventAvailable)
})
})
}
/**
* Checking if your email address is in change status.
*
* @returns {Promise.<boolean>} Email address waiting for changing or not.
*/
isEmailAddressInChangeStatus () {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_EMAIL,
method: 'GET',
headers: {
cookie: this.cookies
}
}).then(res => {
const isEmailAddressInChangingStatus = res.data.includes(
'değişikliği iptal et'
)
resolve(isEmailAddressInChangingStatus)
})
})
}
/**
* Cancel the email address change.
*
* @returns {Promise.<boolean>} A promise for cancel the email address change.
*/
cancelEmailAddressChange () {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_EMAIL,
method: 'GET',
headers: {
cookie: this.cookies
}
})
.then(res => {
// validate page is in email change status
const isWaitingForCancelEmail = res.data.includes(
'değişikliği iptal et'
)
if (!isWaitingForCancelEmail) {
return reject(new Error('Not waiting for change email.'))
}
return res
})
.then(res => {
// parse csrf token
const csrfRegex = new RegExp(
'(?<=input name="__RequestVerificationToken" type="hidden" value=")(.*)(?=" />)',
'u'
)
const csrfToken = csrfRegex.exec(res.data)[0]
const cookies = setCookie.parse(res.headers['set-cookie'], {
map: true
})
const csrfTokenInCookies = cookies.__RequestVerificationToken.value
return { csrfToken, csrfTokenInCookies }
})
.then(async ({ csrfToken, csrfTokenInCookies }) => {
// cancel email address change
const _res = await axios({
url: URLS.SETTINGS_CANCEL_UPDATE_EMAIL,
method: 'POST',
headers: {
Cookie: `__RequestVerificationToken=${csrfTokenInCookies}; ${this.cookies}`
},
data: qs.stringify({
__RequestVerificationToken: csrfToken
})
})
return _res
})
.then(res => {
const isSucc = res.status === 200
if (!isSucc) {
return reject(new Error('An unknown error occurred.'))
}
resolve()
})
})
}
/**
* Change your password.
*
* @param {string} currPassword Your current password.
* @param {string} newPassword A new password.
* @returns {Promise.<boolean>} A promise for change password.
*/
changePassword (currPassword, newPassword) {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_PASSWORD,
method: 'GET',
headers: {
cookie: this.cookies
}
})
.then(res => {
// parse csrf token
const csrfRegex = new RegExp(
'(?<=input name="__RequestVerificationToken" type="hidden" value=")(.*)(?=" />)',
'u'
)
const csrfToken = csrfRegex.exec(res.data)[0]
const cookies = setCookie.parse(res.headers['set-cookie'], {
map: true
})
const csrfTokenInCookies = cookies.__RequestVerificationToken.value
return { csrfToken, csrfTokenInCookies }
})
.then(async ({ csrfToken, csrfTokenInCookies }) => {
// change password
const _res = await axios({
url: URLS.SETTINGS_PASSWORD,
method: 'POST',
headers: {
Cookie: `__RequestVerificationToken=${csrfTokenInCookies}; ${this.cookies}`
},
data: qs.stringify({
__RequestVerificationToken: csrfToken,
OldPassword: currPassword,
Password: newPassword,
PasswordConfirm: newPassword
}),
validateStatus: status => {
// successful response returns 404 status so accept 4xx responses
return status >= 200 && status < 500
}
})
return _res
})
.then(res => {
const isSucc =
res.data.includes('şifreniz güncellendi') && res.status === 404
const isCurrPasswordWrong = res.data.includes(
'şu anki şifrenizi yanlış girdiniz'
)
const isUnknownErr = res.data.includes(
'<title>büyük başarısızlıklar sözkonusu - ekşi sözlük</title>'
)
const isTooManyRequest = res.status === 429
if (isTooManyRequest) {
return reject(new Error('Too many request for changing password.'))
}
if (isCurrPasswordWrong) {
return reject(new Error('Current password is wrong.'))
}
if (!isSucc || isUnknownErr) {
return reject(new Error('An unknown error occurred.'))
}
// update cookies with the new token
const cookies = setCookie.parse(res.headers['set-cookie'], {
map: true
})
const newToken = cookies.a.value
this.cookies = `a=${newToken}`
resolve()
})
})
}
/**
* Delete your account.
*
* @param {string} password Your current password.
* @param {boolean} [hideEntries=false] Hide your entries.
* @returns {Promise} Promise.
*/
deleteAccount (password, hideEntries = false) {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_DELETE_ACCOUNT,
method: 'POST',
headers: {
Cookie: this.cookies
},
data: qs.stringify({
Password: password,
HideEntries: hideEntries
})
}).then(res => {
resolve()
})
})
}
/**
* Change login username.
*
* @param {string} newUsername Your new login username.
* @param {string} password Your current password.
* @returns {Promise} Promise.
*/
changeLoginUsername (newUsername, password) {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_CHANGE_USERNAME,
method: 'GET',
headers: {
cookie: this.cookies
}
})
.then(res => {
// parse csrf token
const csrfRegex = new RegExp(
'(?<=input name="__RequestVerificationToken" type="hidden" value=")(.*)(?=" />)',
'u'
)
const csrfToken = csrfRegex.exec(res.data)[0]
const cookies = setCookie.parse(res.headers['set-cookie'], {
map: true
})
const csrfTokenInCookies = cookies.__RequestVerificationToken.value
return { csrfToken, csrfTokenInCookies }
})
.then(async ({ csrfToken, csrfTokenInCookies }) => {
// change password
const _res = await axios({
url: URLS.SETTINGS_CHANGE_USERNAME,
method: 'POST',
headers: {
Cookie: `__RequestVerificationToken=${csrfTokenInCookies}; ${this.cookies}`
},
data: qs.stringify({
__RequestVerificationToken: csrfToken,
Password: password,
NewLoginName: newUsername
}),
validateStatus: status => {
// successful response returns 404 status so accept 4xx responses
return status >= 200 && status < 500
}
})
return _res
})
.then(res => {
const isSucc =
res.data.includes(
'giriş için kullandığınız kullanıcı adını güncelledik'
) && res.status === 404
if (!isSucc) {
return reject(new Error('An unknown error occurred.'))
}
resolve()
})
})
}
/**
* Change your email address.
*
* @param {string} currEmailAddress Your current email address.
* @param {string} newEmailAddress A new email address.
* @param {string} password Your current password.
* @returns {Promise} A promise for change email address.
*/
changeEmailAddress (currEmailAddress, newEmailAddress, password) {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_EMAIL,
method: 'GET',
headers: {
cookie: this.cookies
}
})
.then(res => {
// validate page is in email change status
const isWaitingForCancelEmail = res.data.includes(
'değişikliği iptal et'
)
if (isWaitingForCancelEmail) {
return reject(new Error('Email address already changed.'))
}
return res
})
.then(res => {
// parse csrf token
const csrfRegex = new RegExp(
'(?<=input name="__RequestVerificationToken" type="hidden" value=")(.*)(?=" />)',
'u'
)
const csrfToken = csrfRegex.exec(res.data)[0]
const cookies = setCookie.parse(res.headers['set-cookie'], {
map: true
})
const csrfTokenInCookies = cookies.__RequestVerificationToken.value
return { csrfToken, csrfTokenInCookies }
})
.then(async ({ csrfToken, csrfTokenInCookies }) => {
// change password
const _res = await axios({
url: URLS.SETTINGS_EMAIL,
method: 'POST',
headers: {
Cookie: `__RequestVerificationToken=${csrfTokenInCookies}; ${this.cookies}`
},
data: qs.stringify({
__RequestVerificationToken: csrfToken,
CurrentEmail: currEmailAddress,
Password: password,
NewEmail: newEmailAddress,
ConfirmNewEmail: newEmailAddress
})
})
return _res
})
.then(res => {
const isSucc =
res.data.includes('değişikliği iptal et') && res.status === 200
if (!isSucc) {
return reject(new Error('An unknown error occurred.'))
}
resolve()
})
})
}
/**
* Create backup.
*
* @returns {Promise} A promise for create backup.
*/
createBackup () {
return new Promise((resolve, reject) => {
axios({
url: URLS.SETTINGS_CREATE_BACKUP,
method: 'POST',
responseType: 'arraybuffer',
headers: {
Cookie: this.cookies
},
validateStatus: status => {
// for catch five minute error
return status >= 200 && status < 500
}
}).then(res => {
const isSucc = res.status === 200
const isFiveMinuteError =
res.data.includes('yedekleri 5 dakika ara ile verebiliyoruz.') &&
res.status === 404
if (isFiveMinuteError) {
return reject(new Error('You can create backup every 5 minutes.'))
}
if (!isSucc) {
return reject(new Error('An unknown error occurred.'))
}
resolve(res.data)
})
})
}
/**
* Pin an entry to the profile.
*
* @param {number} entryId Entry ID which user owns.
* @returns {Promise} Promise.
*/
pinEntry (entryId) {
return new Promise((resolve, reject) => {
axios
.post(URLS.PIN, qs.stringify({ entryId }), {
headers: {
cookie: this.cookies,
'x-requested-with': 'XMLHttpRequest'
}
})
.then(res => {
if (res.data.Success) {
resolve()
} else {
reject(new Error('It is not your entry or entry is not yours.'))
}
})
})
}
/**
* Remove pin from profile.
*
* @returns {Promise} Promise.
*/
removePin () {
return new Promise((resolve, reject) => {
axios
.post(URLS.PIN_REMOVE, null, {
headers: {
cookie: this.cookies,
'x-requested-with': 'XMLHttpRequest'
}
})
.then(res => {
if (res.data !== true) {
return reject(new Error('No pinned entry found.'))
}
resolve()
})
})
}
/**
* Create entry.
*
* @param {string} title Title.
* @param {string} content Entry content.
* @param {object} options Parameters that user can specify.
* @param {boolean} [options.saveAsDraft=false] Save as draft.
* @returns {Promise.<(EntryForMember|DraftEntry)>} Created entry.
*/
async createEntry (title, content, options = {}) {
return await createEntry(
this._request,
title,
content,
options,
this.cookies
)
}
/**
* Fetch entry by id.
*
* @param {number} entryId Entry Id.
* @returns {Promise.<EntryForMember>} A promise for the entry.
*/
async entryById (entryId) {
const entry = new EntryForMember(this._request, entryId, this.cookies)
await entry.retrieve()
return entry
}
/**
* Fetch entries.
*
* @param {string} title Title itself.
* @param {object} options Parameters that user can specify.
* @param {number} [options.page=1] Page number.
* @returns {Promise.<EntryCollection>} A promise for the entries.
*/
async entries (title, options = {}) {
const _options = {
...options,
cookies: this.cookies
}
const collection = new EntryCollection(this._request, title, _options)
await collection.retrieve()
return collection
}
/**
* Fetch user.
*
* @param {string} username Entry Id.
* @returns {Promise.<UserForMember>} A promise for the entry.
*/
async user (username) {
const user = new UserForMember(this._request, username, this.cookies)
await user.retrieve()
return user
}
/**
* Fetch the user profile.
*
* @returns {Promise.<UserForMember>} A promise for the entry.
*/
async me () {
const user = new UserForMember(this._request, this.username, this.cookies)
await user.retrieve()
return user
}
/**
* Fetch today entries.
*
* @param {object} options Parameters that user can specify.
* @param {number} [options.page=1] Page number.
* @returns {Promise.<TitleCollection>} A promise for the titles of today.
*/
async today (options = {}) {
const target = '/basliklar/bugun'
const _options = {
...options,
cookies: this.cookies
}
const collection = new TitleCollection(this._request, target, _options)
await collection.retrieve()
return collection
}
/**
* Fetch rookie entries.
*
* @param {object} options Parameters that user can specify.
* @param {number} [options.page=1] Page number.
* @returns {Promise.<TitleCollection>} A promise for the rookie titles.
*/
async rookieTitles (options = {}) {
const target = '/basliklar/caylaklar'
const _options = { ...options, cookies: this.cookies }
const collection = new TitleCollection(this._request, target, _options)
await collection.retrieve()
return collection
}
/**
* Fetch events.
*
* @returns {Promise.<TitleCollection>} A promise for the titles of events.
*/
async events () {
const target = '/basliklar/olay'
const _options = { defaultEntryCount: 0, cookies: this.cookies }
const collection = new TitleCollection(this._request, target, _options)
await collection.retrieve()
return collection
}
/**
* Fetch draft entries.
*
* @param {object} options Parameters that user can specify.
* @param {number} [options.page=1] Page number.
* @returns {Promise.<TitleCollection>} A promise for the titles of drafts.
*/
async drafts (options = {}) {
const target = '/basliklar/kenar'
const _options = {
...options,
type: TITLE_TYPES.DRAFT,
cookies: this.cookies
}
const collection = new TitleCollection(this._request, target, _options)
await collection.retrieve()
return collection
}
/**
* Fetch followed user titles.
*
* @param {object} options Parameters that user can specify.
* @param {number} [options.page=1] Page number.
* @returns {Promise.<TitleCollection>} A promise for the followed user titles.
*/
async followedUserTitles (options = {}) {
const target = '/basliklar/takipentry'
const _options = {
...options,
type: TITLE_TYPES.FOLLOWED_USER,
cookies: this.cookies
}
const collection = new TitleCollection(this._request, target, _options)
await collection.retrieve()
return collection
}
/**
* Fetch followed user favorite entries.
*
* @param {object} options Parameters that user can specify.
* @param {number} [options.