Parse geo-queries always empty - objective-c

Im currently trying to get Parse's geo-query system to work. On my data browser, I have an installation with a key "location" of type geo-point that has a geo-point with latitude 30.27263636013176 and longitude -97.75766807716373 set in it.
However, if I try to query with the following code, I always get "results":[].
curl -X GET \
-H "X-Parse-Application-Id: myAppKey" \
-H "X-Parse-REST-API-Key: myAPIKey" \
-G \ --data-urlencode 'limit=10' \
--data-urlencode 'where={
"location": {
"$nearSphere": {
"__type": "GeoPoint",
"latitude": 30,
"longitude": -97
}
}
}' \
https://api.parse.com/1/classes/PlaceObject
Note that the query is running successfully; there are no errors. The problem is the installation I have should come up.
If I change the latitude and longitude in the query to exactly the latitude and longitude shown in the data browser, I still get empty results. What is the reason for this? Is it not possible to query for device installations near a point?

The Installation class can't be queried from the client, for good reason. Too much sensitive information is stored in the Installation class to allow querying from a client.
Either move the location property to another class you can query, or query it in a Cloud Function.
You can query it in Cloud Code if you use Parse.Cloud.useMasterKey();, though I strongly recommend using a different class to store the location.

Should the url be https://api.parse.com/1/classes/Installation instead of https://api.parse.com/1/classes/PlaceObject ?

Related

twitter api v2 to capture random sample of a specific language

I can't believe this is not a common/often considered query to the twitter v2 API
We are looking for a sample of tweets in a specific language (we're testing language translation tech) e.g. english or spanish.
There exists a sample end point, there exists a search query end point, however
sample endpoint doesn't seem to allow to attach a query. The search query doesn't seem to allow an 'empty search string', on which can add the language specifier
we've tried things like (as no real clues in the docs, so these do fail as expected)
curl --request GET 'https://api.twitter.com/2/tweets/sample/stream?lang:en'
curl --request GET 'https://api.twitter.com/2/tweets/search/recent?query=lang:en'
curl -X POST 'https://api.twitter.com/2/tweets/search/stream/rules' \
-H "Content-type: application/json" \
-H "Authorization: Bearer <TOKEN>" -d \
'{
"add": [
{"value": " lang:en"}
]
}'
and also things like
"'{
"add": [
{"value": "from: * lang:en"}
]
}'
we could query the sample, include the language field and then dismiss all we are not interested in, but given we need large volumes, this will waste quotas.
Anyone accomplished this?

REST query to get all roles for particular user from parse server

How to create a REST query to get all roles assigned to a user?
As this is many to many relation in the opposite direction the regular $relatedTo operator seems to be not enough...
finally I found the solution which seems to be much easier than I was afraid of :) As I found similar questions on SO and github I hope it will help others.
the curl query to get all the roles directly assigned to a user is:
curl -X GET \
-H "X-Parse-Application-Id: ${APPLICATION_ID}" \
-H "X-Parse-REST-API-Key: ${REST_API_KEY}" \
https://parseapi.back4app.com/roles \
--data-urlencode \
'where={"users":{"__type":"Pointer","className":"_User","objectId":"<objectId>"}}'

Single quote in bash script curl command keeps getting converted to double quote

Seen many related posts but nothing has helped me resolve my issue. I have a CURL command in a bash script. The Data element contains a SQL command. The SQL command includes a param that must be single quoted. So, it looks like this:
jsonData=$(curl --request POST \
--url $uribase/Redrock/Query \
--header 'content-type: application/json' \
--header 'X-NATIVE-CLIENT: 1' \
--data '{"Script":"'"Select Server.ID, Server.ComputerClass, Server.FQDN, Server.Name, Server.SessionType from Server WHERE Server.ComputerClass='Unix' COLLATE NOCASE"'"}')
I've tried so many variations on quoting the Server.ComputerClass value to no avail. I can't get it to resolve to ='Unix'. Even tried \u0027 unicode.
Any help appreciated.
Rather than trying to quote it correctly, feed it to curl from a here document via standard input. Use an array to allow you to organize the options more cleanly as well.
curl_opts=( --request POST
--url "$uribase/Redrock/Query"
--header 'content-type: application/json'
--header 'X-NATIVE-CLIENT: 1'
--data #-
)
The #- tells curl to read the data from a file named -, which is a curl-defined alias for standard input.
jsonData=$(curl "${curl_opts[#]}" <<EOF
{ "Script": "Select Server.ID, Server.ComputerClass, Server.FQDN, Server.Name, Server.SessionType from Server WHERE Server.ComputerClass='Unix' COLLATE NOCASE"}
EOF
)
Quoting gets confusing fast. Yes, using a file to store the statement will work ; if you prefer not to do that, then here is something you could try.
Create a function :
sql_request()
{
printf "'{"
printf '"Script"'
...
}
You get the general idea : break it down in as many pieces as needed ; when you need a single quote enclose it in double quotes, when you need a double quote, enclose it in single quotes.
You can then call that function as needed to get your request :
"$(sql_request)"
You can even easily feed arguments into this function to change portions of the string.

wit.ai HTTP Post/entities API not show expressions in "Keyword" search strategy

I try to post Intent and entity via wit.ai HTTP API.
My JSON format:
{"entities"=>[{"id"=>"intent", "lookups"=>["trait"], "values"=> [{"value"=>"ask_info", "expressions"=>["How old are you ?"]}]}, {"id"=>"age", "values"=>[{"value"=>"old", "expressions"=>["How old are you ?"]}]}]}
Input sentence is "How old are you ?"
Intent is ask_info
Entity is age for value 'old'
I call post entitiles API twice for Intent and Entity
$ curl -XPOST 'https://api.wit.ai/entities?v=20160526' \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"id"=>"intent", "lookups"=>["trait"], "values"=> [{"value"=>"ask_info", "expressions"=>["How old are you ?"]}]}'
$ curl -XPOST 'https://api.wit.ai/entities?v=20160526' \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"id"=>"age", "values"=>[{"value"=>"old", "expressions"=>["How old are you ?"]}]}'
In wit.ai page, entity age not mapping to expression "How old are you ?".
Just display in Synonyms
Display Image
Downloaded Dataset only show intent no entity
{
"text" : "How old are you ?",
"entities" : [
{
"entity" : "intent",
"value" : "\"ask_info\""
}
]
}
wit.ai GUI work very nice
{
"text" : "How old are you ?",
"entities" : [
{
"entity" : "intent",
"value" : "\"ask_info\""
},
{
"entity" : "age",
"value" : "\"old\"",
"start" : 2,
"end" : 3
}
]
}
Do you have any method could solve this problem?
I've bypassed this bug by manually crafting an archive which I later used for deploy.
There are multiple issues with this approach:
Apps cannot be updated from an archive, the importer only supports creating new apps as far as I know. This means the history will be lost between deploys and the server token will need to be changed.
The importer seems to be a little flaky. Tampering with the archive is possible, but zipping back is complicated: all files should be in an directory, no directory entries should be present, and the file order also seems to be important.
The upside is multiple features that are not available in the API are exposed, such as setting the 'free-text' lookups option.
I've downloaded an sample application and proceeded from there.

How to edit a github issue using the API (curl)? (especially: close)

I'm planning to migrate a couple hundred bugs tracked in another (home-rolled) system into GitHub's issue system. Most of these bugs were closed in the past. I can use github's API to create an issue, e.g.
curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{
"title": "test",
"body": "the body"
}'
... however, this will leave me with a bunch of open issues. How to close those? I've tried just closing at the time of creation, e.g.:
curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues -d '{
"title": "test",
"body": "the body",
"state": "closed"
}'
... but the result is to create an open issue (i.e. the "state" is ignored).
It looks to me like I should be able to "edit" an issue to close it (https://developer.github.com/v3/issues/#edit-an-issue) ... but I'm unable to figure out what the corresponding curl command is supposed to look like. Any guidance?
Extra credit: I'd really like to be able to assign a "closed" date, to agree with the actual closed date captured in our current system. It's not clear that this is possible.
Thanks!
migrating a bunch of issues to github with the command line? are you crazy?
anyway, using php and hhb_curl from https://github.com/divinity76/hhb_.inc.php/blob/master/hhb_.inc.php ,
this worked for me, unfortunately couldn't set the "closed_at" date (it was ignored by the api), but i could emulate it using labels, then it looked like
, the code should give you something to work on when porting it to command line:
<?php
declare(strict_types = 1);
require_once ('hhb_.inc.php');
$hc=new hhb_curl();
define('BASE_URL','https://api.github.com');
$hc->_setComfortableOptions();
$data=array(
'state'=>'closed',
'closed_at'=> '2011-04-22T13:33:48Z',// << unfortunately, ignored
'labels'=>array(
'closed at 2011-04-22T13:33:48Z' // << we can fake it using labels...
)
);
$data=json_encode($data);
$hc->setopt_array(array(
CURLOPT_CUSTOMREQUEST=>'PATCH',
// /repos/:owner/:repo/issues/:number
// https://github.com/divinity76/GitHubCrashTest/issues/1
CURLOPT_URL=>BASE_URL.'/repos/divinity76/GitHubCrashTest/issues/1',
CURLOPT_USERAGENT=>'test',
CURLOPT_HTTPHEADER=>array(
'Accept: application/vnd.github.v3+json',
'Content-Type: application/json',
'Authorization: token <removed>'
),
CURLOPT_POSTFIELDS=>$data,
));
$hc->exec();
hhb_var_dump($hc->getStdErr(),$hc->getResponseBody());
(i modified the "Authorization: token" line before posting it on stackoverflow ofc)
As suggested by hanshenrik, the correct altered curl command is:
curl -u $GITHUB_TOKEN:x-oauth-basic https://api.github.com/repos/my_organization/my_repo/issues/5 -d '{
"state": "closed"
}'
I'd failed to understand the documentation referenced in his answer:
/repos/:owner/:repo/issues/:number
translates to
https://api.github.com/repos/my_organization/my_repo/issues/5
(I now understand that fields starting with ":" are variables)
For the record, I'm planning to script the calls to curl. :)