Advertisement
rAthus

GraphQL using PHP cURL demo for Immomig MIG-API REST JSON

Mar 15th, 2021
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.76 KB | None | 0 0
  1. <?php
  2.    
  3.     function immomig_query($query) {
  4.         $url = 'https://api.myimmomig.com/graphql/v1';
  5.         $username = 'aaaa-bbbb-cccc-dddd';
  6.         $password = 'asdf1234';
  7.        
  8.         $post = '{"query":"'.trim(preg_replace('!\s+!',' ',str_replace(array("\n","\r","\t",'"'),array(' ',' ',' ','\"'),$query))).'"}';
  9.        
  10.         $headers = array();
  11.         $headers[] = 'Content-Type: application/json';
  12.        
  13.         $ch = curl_init();
  14.         curl_setopt($ch, CURLOPT_URL, $url);
  15.         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  16.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17.         curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  18.         curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
  19.         curl_setopt($ch, CURLOPT_POST, 1);
  20.         curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  21.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  22.         $result = curl_exec($ch);
  23.         $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  24.         curl_close($ch);
  25.        
  26.         /**/echo '<h2>immomig_query()</h2>';
  27.         /**/echo '<pre>'.$post.'</pre>';
  28.         /**/echo '<pre>'.$status_code.'</pre>';
  29.         /**/echo '<pre>'; print_r(json_decode($result,true)); echo '</pre>';
  30.        
  31.         return json_decode($result,true);
  32.     }
  33.    
  34.     $query = 'query {
  35.       objects(first: 5, offset: 0, room_min: 4, room_max: 6) {
  36.        totalCount,
  37.        list {
  38.         id,
  39.         reference,
  40.        }
  41.      }
  42.     }';
  43.     immomig_query($query);
  44.    
  45.     $query = 'query {
  46.       object(id: 131232) {
  47.         id,
  48.         reference,
  49.         date_creation,
  50.         date_lastedit,
  51.         category {
  52.           ident,
  53.           text { fr, de, it, en }
  54.         },
  55.         subcategory {
  56.           ident,
  57.           text { fr, de, it, en }
  58.         },
  59.         online,
  60.         images {
  61.           id,
  62.           online,
  63.           url,
  64.           description {fr de it en}
  65.         },
  66.         files {
  67.           id,
  68.           url,
  69.         },
  70.         descriptions {
  71.           title {fr de it en},
  72.           main{fr de it en}
  73.         },
  74.         distances {
  75.           train_station {meters}
  76.           public_transports{meters}
  77.         },
  78.         surfaces {
  79.           living {
  80.             is_approximate,
  81.             is_lower_bound,
  82.             value
  83.           },
  84.           living_total {
  85.             is_approximate,
  86.             is_lower_bound,
  87.             value
  88.           },
  89.           usable {
  90.             is_approximate,
  91.             is_lower_bound,
  92.             value
  93.           },
  94.           land {
  95.             is_approximate,
  96.             is_lower_bound,
  97.             value
  98.           },
  99.         }
  100.         contact {
  101.           agency {
  102.             id,
  103.             name,
  104.             references,
  105.             address,
  106.             zip,
  107.             city,
  108.             country,
  109.             phone,
  110.             mobile,
  111.             fax,
  112.             email
  113.           },
  114.           visit {
  115.             ... on VisitContactPerson {
  116.                 gender { ident },
  117.                 firstname,
  118.                 lastname,
  119.                 phone,
  120.                 mobile,
  121.                 fax,
  122.                 email,
  123.                 remark,
  124.                 picture_url
  125.             }
  126.             ... on VisitContactDepartment {
  127.                 type { ident },
  128.                 address,
  129.                 zip,
  130.                 city,
  131.                 phone,
  132.                 fax,
  133.                 email
  134.             }
  135.           }
  136.         },
  137.         types {ident text{fr de it en}}
  138.         situation {
  139.           lat,
  140.           lng,
  141.           address,
  142.           address_substitution,
  143.           zip,
  144.           city,
  145.           state,
  146.           country,
  147.         }
  148.       }
  149.     }';
  150.     immomig_query($query);
  151.    
  152.     /**/die('END');
  153.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement