Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.30 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     "os"
  5.     "flag"
  6.     "fmt"
  7.     "github.com/go-resty/resty"
  8.     "encoding/json"
  9.     "errors"
  10.     "time"
  11.     //"strconv"
  12. )
  13. var token string
  14. type RequestParams map[string]string
  15. func main() {
  16.     flag.Parse()
  17.     args := flag.Args()
  18.     if len(args) < 1 {
  19.         fmt.Println("Usage: ./vk <token>")
  20.         os.Exit(1)
  21.     }
  22.     token = args[0]
  23.     params := make(RequestParams, 300)
  24.     params["album_id"] = "profile"
  25.     resp, err := CallMethod("photos.get", params)
  26.     if err != nil {
  27.         fmt.Println("ERROR")
  28.         os.Exit(1)
  29.     }
  30.     type JSONBody struct {
  31.         Response struct {
  32.             Count int `json:"count"`
  33.                 Items []struct {
  34.                         PhotoID int `json:"id"`
  35.                 } `json:"items"`
  36.         } `json:"response"`
  37.     }
  38.     var body JSONBody
  39.     json.Unmarshal(resp, &body);
  40.     params1 := make(RequestParams, 300)
  41.     if len(body.Response.Items[0].PhotoID) < 1 {
  42.         fmt.Println("PhotoID: undefined")
  43.         os.Exit(1)
  44.     }
  45.     msg := fmt.Sprintf("%d", body.Response.Items[0].PhotoID)
  46.     fmt.Println(msg)
  47.     for i := 0; i < 100; i++ {
  48.         params1["photo_id"] = msg
  49.         _, err := CallMethod("photos.delete", params1)
  50.         if err != nil {
  51.             fmt.Println("ERROR photos.delete")
  52.         }
  53.         _, err1 := CallMethod("photos.restore", params1)
  54.         if err1 != nil {
  55.             fmt.Println("ERROR photos.restore")
  56.         }
  57.         time.Sleep(1000)
  58.     }
  59. }
  60. func CallMethod(method string, params RequestParams) ([]byte, error) {
  61.     params["access_token"] = token
  62.     params["lang"] = "ru" // or..
  63.     params["v"] = "5.60"
  64.  
  65.     resp, err := resty.R().
  66.         SetQueryParams(params).
  67.         Get("https://api.vk.com/method/" + method)
  68.  
  69.     if err != nil {
  70.         fmt.Println("[Error] VK::CallMethod:", err.Error(), "WebResponse:", string(resp.Body()))
  71.         return nil, err
  72.     }
  73.  
  74.     type JSONBody struct {
  75.         Error map[string]interface{} `json:"error"`
  76.     }
  77.  
  78.     var body JSONBody
  79.  
  80.     if err := json.Unmarshal(resp.Body(), &body); err != nil {
  81.         fmt.Println("[Error] VK::CallMethod:", err.Error(), "WebResponse:", string(resp.Body()))
  82.         return nil, err
  83.     }
  84.  
  85.     if body.Error != nil {
  86.         if errorMsg, exists := body.Error["error_msg"].(string); exists {
  87.             fmt.Println("[Error] VK::CallMethod:", errorMsg, "WebResponse:", string(resp.Body()))
  88.             return nil, errors.New(errorMsg)
  89.         }
  90.  
  91.         fmt.Println("[Error] VK::CallMethod:", "Unknown error", "WebResponse:", string(resp.Body()))
  92.         return nil, errors.New("Unknown error")
  93.     }
  94.  
  95.     return resp.Body(), nil
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement