func (v Photos) GetUploadServer(params PhotosGetUploadServerParams) (*PhotosGetUploadServerResponse, error) {
	r, err := v.API.Request("photos.getUploadServer", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetUploadServerResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
GetUploadServer Returns the server address for photo upload.
package vkapi
import (
	"encoding/json"
	"strconv"
	"github.com/stek29/vk"
)
type Photos struct {
	API vk.API
}
type PhotosCreateAlbumParams struct {
	Title string `url:"title"`
	GroupID int `url:"group_id,omitempty"`
	Description        string         `url:"description,omitempty"`
	PrivacyView        CSVStringSlice `url:"privacy_view,omitempty"`
	PrivacyComment     CSVStringSlice `url:"privacy_comment,omitempty"`
	UploadByAdminsOnly bool           `url:"upload_by_admins_only,omitempty"`
	CommentsDisabled   bool           `url:"comments_disabled,omitempty"`
}
type PhotosCreateAlbumResponse genTODOType  
func (v Photos) CreateAlbum(params PhotosCreateAlbumParams) (*PhotosCreateAlbumResponse, error) {
	r, err := v.API.Request("photos.createAlbum", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosCreateAlbumResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosEditAlbumParams struct {
	AlbumID int `url:"album_id"`
	Title string `url:"title,omitempty"`
	Description string `url:"description,omitempty"`
	OwnerID            int            `url:"owner_id,omitempty"`
	PrivacyView        CSVStringSlice `url:"privacy_view,omitempty"`
	PrivacyComment     CSVStringSlice `url:"privacy_comment,omitempty"`
	UploadByAdminsOnly bool           `url:"upload_by_admins_only,omitempty"`
	CommentsDisabled   bool           `url:"comments_disabled,omitempty"`
}
func (v Photos) EditAlbum(params PhotosEditAlbumParams) (bool, error) {
	r, err := v.API.Request("photos.editAlbum", params)
	if err != nil {
		return false, err
	}
	return decodeBoolIntResponse(r)
}
type PhotosGetAlbumsParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	AlbumIDs CSVIntSlice `url:"album_ids,omitempty"`
	Offset int `url:"offset,omitempty"`
	Count int `url:"count,omitempty"`
	NeedSystem bool `url:"need_system,omitempty"`
	NeedCovers bool `url:"need_covers,omitempty"`
	PhotoSizes bool `url:"photo_sizes,omitempty"`
}
type PhotosGetAlbumsResponse struct {
	Count int `json:"count,omitempty"`
	Items []genTODOType  `json:"items,omitempty"`
}
func (v Photos) GetAlbums(params PhotosGetAlbumsParams) (*PhotosGetAlbumsResponse, error) {
	r, err := v.API.Request("photos.getAlbums", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetAlbumsResponse
	err = json.Unmarshal(r, &resp)
	if err != nil {
		return nil, err
	}
	return &resp, nil
}
type PhotosGetParams struct {
	OwnerID int `url:"owner_id,omitempty"`
	AlbumID string `url:"album_id,omitempty"`
	PhotoIDs CSVStringSlice `url:"photo_ids,omitempty"`
	Rev bool `url:"rev,omitempty"`
	Extended bool `url:"extended,omitempty"`
	FeedType string `url:"feed_type,omitempty"`
	Feed int `url:"feed,omitempty"`
	PhotoSizes bool `url:"photo_sizes,omitempty"`
	Offset     int  `url:"offset,omitempty"`
	Count      int  `url:"count,omitempty"`
}
type PhotosGetResponse interface {
	isPhotosGet()
}
type PhotosGetResponseNormal struct {
	Count int        `json:"count,omitempty"`
	Items []vk.Photo `json:"items,omitempty"`
}
func (PhotosGetResponseNormal) isPhotosGet() {}
type PhotosGetResponseExtended struct {
	Count int        `json:"count,omitempty"`
	Items []vk.Photo `json:"items,omitempty"`
}
func (PhotosGetResponseExtended) isPhotosGet() {}
func (v Photos) Get(params PhotosGetParams) (PhotosGetResponse, error) {
	r, err := v.API.Request("photos.get", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetResponse
	if params.Extended {
		var tmp PhotosGetResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp PhotosGetResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosGetAlbumsCountParams struct {
	UserID int `url:"user_id,omitempty"`
	GroupID int `url:"group_id,omitempty"`
}
type PhotosGetAlbumsCountResponse int
func (v Photos) GetAlbumsCount(params PhotosGetAlbumsCountParams) (PhotosGetAlbumsCountResponse, error) {
	r, err := v.API.Request("photos.getAlbumsCount", params)
	if err != nil {
		return 0, err
	}
	var resp PhotosGetAlbumsCountResponse
	var cnv int
	cnv, err = strconv.Atoi(string(r))
	resp = PhotosGetAlbumsCountResponse(cnv)
	if err != nil {
		return 0, err
	}
	return resp, nil
}
type PhotosGetByIDParams struct {
	Photos CSVStringSlice `url:"photos"`
	Extended bool `url:"extended,omitempty"`
	PhotoSizes bool `url:"photo_sizes,omitempty"`
}
type PhotosGetByIDResponse interface {
	isPhotosGetByID()
}
type PhotosGetByIDResponseNormal []vk.Photo
func (PhotosGetByIDResponseNormal) isPhotosGetByID() {}
type PhotosGetByIDResponseExtended []vk.Photo
func (PhotosGetByIDResponseExtended) isPhotosGetByID() {}
func (v Photos) GetByID(params PhotosGetByIDParams) (PhotosGetByIDResponse, error) {
	r, err := v.API.Request("photos.getById", params)
	if err != nil {
		return nil, err
	}
	var resp PhotosGetByIDResponse
	if params.Extended {
		var tmp PhotosGetByIDResponseExtended
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	} else {
		var tmp PhotosGetByIDResponseNormal
		err = json.Unmarshal(r, &tmp)
		resp = &tmp
	}
	if err != nil {
		return nil, err
	}
	return resp, nil
}
type PhotosGetUploadServerParams struct {
	GroupID int `url:"group_id,omitempty"`
	AlbumID int `url:"album_id,omitempty"`
}
type PhotosGetUploadServerResponse struct {
	UploadURL string `json:"upload_url,omitempty"`
	AlbumID int `json:"album_id,omitempty"`
	UserID int `json:"user_id,omitempty"`
}