2014-02-06 7 views
0

Это мой локон команда, которая хорошо работает в командной строке:Преобразование Curl командной строки в Rails

curl --data @order_new.json \ 
    -H "X-Augury-Token:My_token_goes_here" \ 
    -H "Content-Type:application/json" \ 
    http://staging.hub.spreecommerce.com/api/stores/store_id_goes_here/messages 

Мне нужно реализовать то же самое в рельсах с помощью каких-либо драгоценных камней, Пробовал с HTTParty/rest_client/spree- апи-клиент, но что-то здесь не так:

require 'httparty' 

result = HTTParty.post(
     "http://staging.hub.spreecommerce.com/api/stores/52eb347f755b1c97e900001e/messages", 
     :body => JSON.parse(File.read("order_new.json")), 
     :header => { 
      "X-Augury-Token" => "UjjKsdxbrwjpAPx9Hiw4", 
      "Content-Type" => "application/json" 
     } 
) 

но я получаю ошибки,

"The page you were looking for doesn't exist (404)" 

Мне нужно Rai ls эквивалент выше команды curl, использование spree-api-client gem будет очень полезно.

+2

Curl делает запрос GET и HTTP-участник запроса пост. – andHapp

+0

Я сомневаюсь, что @andHapp, команда curl отправляет параметр '--data', поэтому это должен быть запрос POST, а не запрос GET. –

+0

Ох, право..извидетельствовал это! – andHapp

ответ

0

Если вы предпочитаете использовать Spree::API::Client, можете ли вы опубликовать результаты своих исследований? Не могли бы вы оценить выход из следующих команд и отправить обратно:

client = Spree::API::Client.new('http://staging.hub.spreecommerce.com/api/', 'UjjKsdxbrwjpAPx9Hiw4') 
client.products.inspect 
+0

Я уже видел такие ссылки в github, но как я могу передавать атрибуты «headhead», «data», как делает curl. – Ajay

+0

Вам не нужно. Этот камень не является заменой команды curl, это клиент, с которым вы можете общаться, чтобы общаться со скоростью. Если вы пытаетесь создать заказ, вы должны сделать это с помощью 'client.create_order (data)'. Взгляните на код, чтобы понять, что происходит: https://github.com/andrew/spree-api-client/blob/master/lib/spree-api-client.rb, https://github.com/ andrew/spree-api-client/blob/master/lib/spree-api-client/connection.rb и https://github.com/andrew/spree-api-client/blob/master/lib/spree-api- client/orders.rb –

+0

Да, я получил ваше мнение, используя client.create_order (data), мы можем создать_order в нашем магазине (spree), но он не передает какое-либо сообщение в концентратор явно. , но по моему вопросу, мне нужно передать подобное сообщение для моего концентратора (staging.hub.spreecommerce.com/)! :) – Ajay

0
require 'httparty' 

result = HTTParty.post(
     "http://staging.hub.spreecommerce.com/api/stores/52eb347f755b1c97e900001e/messages", 
     :body => @order.to_json, 
     :header => { 
      "X-Augury-Token" => "UjjKsdxbrwjpAPx9Hiw4", 
      "Content-Type" => "application/json" 
     } 
) 

Не разобрать JSON при переходе к HTTParty тело

+0

GOT ERROR: NoMethodError: undefined method 'json 'for nil: NilClass Давайте забудем о добавлении файла .json в качестве входных данных. Можем ли мы передать объект в разделе body? Точно так же: body => Order.last? – Ajay

+0

вам нужно передать json в body, поэтому порядок загрузки в \ @order и написать \ @ order.to_json –

Смежные вопросы