content: //
  //  Copyright (c) 2014 VK.com
  //
  //  Permission is hereby granted, free of charge, to any person obtaining a copy of
  //  this software and associated documentation files (the "Software"), to deal in
  //  the Software without restriction, including without limitation the rights to
  //  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  //  the Software, and to permit persons to whom the Software is furnished to do so,
  //  subject to the following conditions:
  //
  //  The above copyright notice and this permission notice shall be included in all
  //  copies or substantial portions of the Software.
  //
  //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  //  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  //  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  //  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  //  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  //
  
  package com.vk.sdk.api.methods;
  
  import com.vk.sdk.api.VKApiConst;
  import com.vk.sdk.api.VKParameters;
  import com.vk.sdk.api.VKParser;
  import com.vk.sdk.api.VKRequest;
  import com.vk.sdk.api.model.VKApiUserFull;
  import com.vk.sdk.api.model.VKList;
  import com.vk.sdk.api.model.VKUsersArray;
  
  import org.json.JSONObject;
  
  /**
   * Builds requests for API.users part
   */
  public class VKApiUsers extends VKApiBase {
      /**
       * Returns basic information about current user
       *
       * @return Request for load
       */
      public VKRequest get() {
          return get(null);
      }
  
      /**
       * https://vk.com/dev/users.get
       *
       * @param params use parameters from description with VKApiConst class
       * @return Request for load
       */
      public VKRequest get(VKParameters params) {
          return prepareRequest("get", params, VKRequest.HttpMethod.GET, new VKParser() {
              @Override
              public Object createModel(JSONObject object) {
                  return new VKList<VKApiUserFull>(object, VKApiUserFull.class);
              }
          });
      }
  
      /**
       * https://vk.com/dev/users.search
       *
       * @param params use parameters from description with VKApiConst class
       * @return Request for load
       */
      public VKRequest search(VKParameters params) {
          return prepareRequest("search", params, VKRequest.HttpMethod.GET, VKUsersArray.class);
      }
  
      /**
       * https://vk.com/dev/users.isAppUser
       *
       * @return Request for load
       */
      public VKRequest isAppUser() {
          return prepareRequest("isAppUser", null);
      }
  
      /**
       * https://vk.com/dev/users.isAppUser
       *
       * @param userID ID of user to check
       * @return Request for load
       */
      public VKRequest isAppUser(final int userID) {
          return prepareRequest("isAppUser",
                  new VKParameters() {/**
  					 * 
  					 */
  					private static final long serialVersionUID = 7458591447441581671L;
  
  				{
                      put(VKApiConst.USER_ID, String.valueOf(userID));
                  }});
      }
  
      /**
       * https://vk.com/dev/users.getSubscriptions
       *
       * @return Request for load
       */
      public VKRequest getSubscriptions() {
          return getSubscriptions(null);
      }
  
      /**
       * https://vk.com/dev/users.getSubscriptions
       *
       * @param params use parameters from description with VKApiConst class
       * @return Request for load
       */
      public VKRequest getSubscriptions(VKParameters params) {
          return prepareRequest("getSubscriptions", params);
      }
  
      /**
       * https://vk.com/dev/users.getFollowers
       *
       * @return Request for load
       */
      public VKRequest getFollowers() {
          return getFollowers(null);
      }
  
      /**
       * https://vk.com/dev/users.getFollowers
       *
       * @param params use parameters from description with VKApiConst class
       * @return Request for load
       */
      public VKRequest getFollowers(VKParameters params) {
          return prepareRequest("getFollowers", params);
      }
  
      /**
       * https://vk.com/dev/users.report
       * Created on 29.01.14.
       *
       * @param params use parameters from description with VKApiConst class
       * @return Request for load
       */
      public VKRequest report(VKParameters params) {
          return prepareRequest("report", params);
      }
  }
  