Class: Jmessage::Http

Inherits:
Object
  • Object
show all
Defined in:
lib/jmessage/http.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(form = false) ⇒ Http

Returns a new instance of Http.



8
9
10
11
12
13
14
15
16
# File 'lib/jmessage/http.rb', line 8

def initialize(form=false)
  self.conn = Faraday.new(url: remote_path) do |faraday|
    faraday.request  :multipart if form
    faraday.request  :url_encoded             # form-encode POST params
    faraday.response :logger                  # log requests to STDOUT
    faraday.headers = headers
    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP
  end
end

Instance Attribute Details

#connObject

Returns the value of attribute conn.



6
7
8
# File 'lib/jmessage/http.rb', line 6

def conn
  @conn
end

#responseObject

Returns the value of attribute response.



6
7
8
# File 'lib/jmessage/http.rb', line 6

def response
  @response
end

Instance Method Details

#delete(uri, params = {}) ⇒ Object



32
33
34
# File 'lib/jmessage/http.rb', line 32

def delete(uri, params = {})
  self.response = conn.delete { |req| set_req(req, uri, params) }
end

#get(uri) ⇒ Object



18
19
20
21
# File 'lib/jmessage/http.rb', line 18

def get(uri)
  self.response = conn.get { |req| set_req(req, uri) }
  parse_body
end

#headersObject



61
62
63
64
65
66
# File 'lib/jmessage/http.rb', line 61

def headers
  {
    'Authorization' => "Basic #{Jmessage::Sign.authorize}",
    'Accept' => 'application/json'
  }
end

#imageio(image) ⇒ Object



48
49
50
51
52
53
# File 'lib/jmessage/http.rb', line 48

def imageio(image)
  if image.instance_of?(Tempfile)
    return Faraday::UploadIO.new(image.path, image.content_type, tempfile_name(image))
  end
  Faraday::UploadIO.new(image.path, image.content_type)
end

#parse_bodyObject



44
45
46
# File 'lib/jmessage/http.rb', line 44

def parse_body
  JSON(response.body)
end

#post(uri, params = {}) ⇒ Object



23
24
25
26
# File 'lib/jmessage/http.rb', line 23

def post(uri, params = {})
  self.response = conn.post { |req| set_req(req, uri, params) }
  parse_body
end

#post_image(uri, params = {}) ⇒ Object



36
37
38
39
40
41
42
# File 'lib/jmessage/http.rb', line 36

def post_image(uri, params={})
  self.response = conn.post do |req|
    req.url uri
    req.body = { image: imageio(params[:image]) }
  end
  parse_body
end

#put(uri, params = {}) ⇒ Object



28
29
30
# File 'lib/jmessage/http.rb', line 28

def put(uri, params = {})
  self.response = conn.put { |req| set_req(req, uri, params) }
end

#remote_pathObject



74
75
76
# File 'lib/jmessage/http.rb', line 74

def remote_path
  'https://api.im.jpush.cn'
end

#set_req(req, uri, params = {}) ⇒ Object



68
69
70
71
72
# File 'lib/jmessage/http.rb', line 68

def set_req(req, uri, params = {})
  req.url uri
  req.headers['Content-Type'] = 'application/json'
  req.body = JSON(params) unless params.empty?
end

#tempfile_name(file) ⇒ Object



55
56
57
58
59
# File 'lib/jmessage/http.rb', line 55

def tempfile_name(file)
  extension = file.content_type.split('/').last
  extension = extension.downcase.eql?('jpeg') ? 'jpg' : extension
  File.basename(file) + '.' + extension
end