oauth_china 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/oauth_china.rb CHANGED
@@ -3,6 +3,7 @@ require 'oauth'
3
3
  require 'mime/types'
4
4
  require 'net/http'
5
5
  require 'cgi'
6
+ require 'json'
6
7
 
7
8
  require File.expand_path(File.join(File.dirname(__FILE__), "oauth_china/multipart"))
8
9
  require File.expand_path(File.join(File.dirname(__FILE__), "oauth_china/upload"))
@@ -31,9 +31,29 @@ module OauthChina
31
31
  self.post("http://api.t.163.com/statuses/update.json", options)
32
32
  end
33
33
 
34
- #TODO
34
+ #网易微博发送带图片的微博需要两个步骤:
35
+ #1.利用上传图片接口上传图片,并取得返回的image url
36
+ #2.把取来的image url放到微博的内容中,利用发微博接口发送微博。
37
+ #3.注意:如果把站外图片链接放到微博里发送不会在web页面中显示
35
38
  def upload_image(content, image_path, options = {})
36
- add_status(content, options)
39
+ options = options.merge!(:pic => File.open(image_path, "rb")).to_options
40
+ image_url = parse_image_url(just_upload_image(image_path))
41
+ add_status("#{image_url} #{content}", options)
42
+ end
43
+
44
+ private
45
+
46
+ def just_upload_image(image_path)
47
+ upload("http://api.t.163.com/statuses/upload.json", :pic => File.open(image_path, "rb"))
48
+ end
49
+
50
+ def parse_image_url(resp)
51
+ hash_body = JSON.parse(resp.body)
52
+ if hash_body["error"]
53
+ raise hash_body["error"]
54
+ else
55
+ hash_body["upload_image_url"]
56
+ end
37
57
  end
38
58
 
39
59
  end
@@ -38,7 +38,6 @@ module OauthChina
38
38
  end
39
39
 
40
40
  #TODO
41
- #还未实现
42
41
  def upload_image(content, image_path, options = {})
43
42
  add_status(content, options)
44
43
  end
@@ -48,32 +47,7 @@ module OauthChina
48
47
  #
49
48
  # upload("http://open.t.qq.com/api/t/add_pic", options)
50
49
  # end
51
- #
52
- # def upload(url, options)
53
- # url = URI.parse(url)
54
- # http = Net::HTTP.new(url.host, url.port)
55
- # req = Net::HTTP::Post.new(url.request_uri)
56
- # req = sign_without_pic_field(req, self.access_token, options)
57
- # req = set_multipart_field(req, options)
58
- #
59
- # http.request(req)
60
- #
61
- # end
62
- #
63
- # def sign_without_pic_field(req, access_token, options)
64
- # req.set_form_data(params_without_pic_field(options))
65
- # self.consumer.sign!(req, access_token)
66
- # req
67
- # end
68
- #
69
- # def set_multipart_field(req, params)
70
- # multipart_post = MultipartPost.new
71
- # multipart_post.set_form_data(req, params)
72
- # end
73
- #
74
- # def params_without_pic_field(options)
75
- # options.except(:pic)
76
- # end
50
+
77
51
 
78
52
  end
79
53
  end
@@ -1,3 +1,3 @@
1
1
  module OauthChina
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth_china
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 0.2.0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Hooopo