Class: BeemusicApi::HttpClient

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

Defined Under Namespace

Classes: RequestResponse

Instance Method Summary collapse

Constructor Details

#initialize(server_url, debug = true) ⇒ HttpClient

Returns a new instance of HttpClient.



6
7
8
9
# File 'lib/beemusic_api.rb', line 6

def initialize(server_url, debug = true)
  @server_url = server_url
  @debug      = debug
end

Instance Method Details

#authenticate(user, password, session = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/beemusic_api.rb', line 11

def authenticate(user, password, session = {})
  unless session.empty?
    @cookies  = session
    @user     = user
    @password = password

    return session
  end

  response =  post(
                "/auth/credentials",
                {
                  UserName: user,
                  Password: password,
                  RememberMe: true
                }
              )

  if response.valid?
    @cookies  = response.cookies
    @user     = user
    @password = password
  end

  response.cookies
end

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



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/beemusic_api.rb', line 87

def delete(url, params = {})
  if @debug
    puts "url = #{url}"
    puts "params = #{params}"
  end

  params.merge!({
    params: params[:params].to_json,
    content_type: :json,
    accept:       :json
  })

  params.merge!(cookies: @cookies) unless @cookies.nil?

  RequestResponse.new(RestClient.delete("#{@server_url}/#{url}", params)).response
end

#get(url, params = {}) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/beemusic_api.rb', line 104

def get(url, params = {})
  if @debug
    puts "url = #{url}"
    puts "params = #{params}"
  end

  params.merge!({
    params: params[:params].to_json,
    content_type: :json,
    accept:       :json
  })

  params.merge!(cookies: @cookies) unless @cookies.nil?

  RequestResponse.new(RestClient.get("#{@server_url}/#{url}", params)).response
end

#post(url, params) ⇒ Object



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/beemusic_api.rb', line 121

def post(url, params)
  if @debug
    puts "url = #{url}"
    puts "params = #{params}"
  end

  headers = {
    content_type: :json,
    accept: :json
  }

  headers.merge!(cookies: @cookies) unless @cookies.nil?
  puts "headers = #{headers}"

  RequestResponse.new(
    RestClient.post(
      "#{@server_url}/#{url}",
      params.to_json,
      headers
    ) do |response, request, result|
      response
    end
  )
end

#product(id) ⇒ Object



69
70
71
72
# File 'lib/beemusic_api.rb', line 69

def product(id)
  r = JSON.parse(get("/product/#{id}"))
  BeemusicApi::Models::Product.build(self, r)
end

#products(per_page: 10, page: 1) ⇒ Object



64
65
66
67
# File 'lib/beemusic_api.rb', line 64

def products(per_page: 10, page: 1)
  r = JSON.parse(get("/productpaging/#{per_page}/#{page}"))
  BeemusicApi::Models::Product.build(self, r['Products'], total_entries: r['ItemsCount'].to_i, current_page: r['CurrentPage'].to_i)
end

#put(url, params) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/beemusic_api.rb', line 38

def put(url, params)
  if @debug
    puts "url = #{url}"
    puts "params = #{params}"
  end

  headers = {
    content_type: :json,
    accept: :json
  }

  headers.merge!(cookies: @cookies) unless @cookies.nil?
  puts "headers = #{headers}"

  RequestResponse.new(
    RestClient.put(
      "#{@server_url}/#{url}",
      params.to_json,
      headers
    ) do |response, request, result|
      response
    end
  )

end

#upload_binary(url, payload) ⇒ Object



74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/beemusic_api.rb', line 74

def upload_binary(url, payload)
  r = Faraday.new(@server_url, :ssl => {:verify => false}) do |conn|
    conn.request :multipart
    conn.request :url_encoded
    conn.response :logger
    conn.adapter :net_http
    conn.headers['Cookie'] = @cookies.collect{|k, v| "#{k}=#{v}"}.join('; ')
    conn.basic_auth(@user, @password)
  end

  r.post(url, payload)
end