2013-06-18 10 views
5

Próbuję znaleźć wszystkie czasy freebusy z mojego głównego kalendarza, ale nie mogę uzyskać zapytania, aby rozpoznać moje parametry.Google freebusy wywołanie api w szynach nie rozpoznaje parametrów

W moim kontroler mam:

@freetimes = client.execute(
    :api_method => service.freebusy.query, 
    :parameters => { 
    'timeMin' => '2013-06-15T17:06:02.000Z', 
    'timeMax' => '2013-06-29T17:06:02.000Z', 
    'items' => [{'id' => '[email protected]'}] 
    }, 
    :headers => {'Content-Type' => 'application/json'}) 

odpowiedź pojawia się:

--- !ruby/object:Google::APIClient::Schema::Calendar::V3::FreeBusyResponse 
data: 
error: 
    errors: 
    - domain: global 
     reason: required 
     message: Missing timeMin parameter. 
    code: 400 
    message: Missing timeMin parameter. 

Jednak to pokazuje, że zajęło parametry, ale nie przywiązywać się do zapytania:

--- !ruby/object:Google::APIClient::Result 
request: !ruby/object:Google::APIClient::Request 
    parameters: 
    timeMin: '2013-06-15T17:06:02.000Z' 
    timeMax: '2013-06-29T17:06:02.000Z' 
    items: 
    - id: [email protected] 

Każda pomoc w rozwiązaniu tego problemu byłaby bardzo cenna!

+0

Rozwiązałem go, bazując na znalezionej odpowiedzi [tutaj] [1] Hash musiał zostać przekształcony w JSON, aby poprawnie przejść w przeciwieństwie do innych metod Kalendarza. [1]: http: //stackoverflow.com/questions/7455744/post-json-to-api-using-rails-and-httparty – tristantoye

Odpowiedz

6

rozwiązano to przez podanie treści żądania

client.execute(
    :api_method => service.freebusy.query, 
    :body => JSON.dump({ 
    :timeMin => , 
    :timeMax => , 
    :items => 
    }), 
    :headers => {'Content-Type' => 'application/json'}) 
1

miałem podobny problem. Alternatywą jest to, że można zbudować obiekt FreeBusyRequest.
Jak to:

body = Google::Apis::CalendarV3::FreeBusyRequest.new 
body.items = [calendar_id] 
body.time_min = "2016-06-29T13:00:00z" 
body.time_max = "2016-06-29T21:00:00z" 
body 

`` ` a następnie można przekazać je do obiektu CalendarService tak:

service = Google::Apis::CalendarV3::CalendarService.new 
service.authorization = client 
service.query_freebusy(body) 

będzie to na pewno zwróci odpowiedź stan 200 z organizmu.

Powiązane problemy