Comments (4)
The .add_connection()
method works as you attempted to use it:
instantiated_ti_object.add_connection(object_id_that_exists)
However, if instantiated_ti_object
in this example is an object that hadn't previously existed in TX prior to you creating it and calling .save()
we don't "reload" it properly. Here's the issue:
new = ThreatIndicator()
new.set(TE.ThreatIndicator.STATUS,"MALICIOUS")
new.set(TE.ThreatIndicator.CONFIDENCE,"100")
new.set(TE.ThreatIndicator.TYPE,"URI")
new.set(TE.ThreatIndicator.INDICATOR, someurl)
# set the rest of the necessary stuff....
new.save() # HERE IS THE ISSUE
new.add_connection("object_id_that_exists_in_tx_already")
When you do .save()
, TX will generate an Object ID and assign it to the new Threat Indicator. When we get the response from the server, we just return it to you. This means that your new
object in this example doesn't have an id
still and thus doesn't have a properly formatted DETAILS
or RELATED
URL attribute. So when you go to add a connection, it fails because the URL it uses is wrong.
What we should do is consume the server response on .save()
, and if it is successful and contains an ID, set the ID on our object which should automatically set the URLs for us.
Thanks for catching this!
from threatexchange.
I have this ready to go if you'd like to test it:
I haven't submitted it for a PR because I want the Travis PR to be accepted and going first before submitting any more code changes :)
from threatexchange.
You are right. It doesn't reload the object properly. So, I did something like the following after save():
result=new.save()
new2= ThreatIndicator.details(id=result['id'])
new2.add_connection(object_id_already_exists)
Thanks for looking into this. I will test the change sometime.
from threatexchange.
Thanks! if you test my changes please respond so we can get some input from more than just me! If it works out for you I can get a PR up and running eventually :)
from threatexchange.
Related Issues (20)
- Typing of SignalExchangeAPIWithSimpleUpdates is too Generic | remove use of t.Any
- [py-tx] CLI error opaque for PDQ match with low hash quality HOT 1
- [py-tx] Use the new NON_MALICIOUS reaction
- pdq_hasher error for B/W png HOT 1
- [py-tx] SignalType Reference implementation for Video TMK+PDQF Matching
- [py-tx] ThreatExchange checkpoint time implementation is incorrect, potentially skipping updates HOT 2
- [py-tx] Investigate dbm as a replacement for the default store
- /matches/for-hash/ returns 400, could not parse request HOT 9
- [hma] Clicking Sync button on the webui doesn't do anything
- [py-tx] New extension interface for storage
- [py-ty] Venv setup documentation and/or files
- [hma] Cleanup Settings > ThreatExchange Tab
- [hma] 500 error thrown on invalid PDQ hash HOT 1
- [HMA] graph API 9.0 hardcoded, now deprecated HOT 1
- [py-tx][HMA-in-a-bottle] Modularising py-tx -- Draft roadmap HOT 6
- [hma] Fetcher policy fails to access index HOT 1
- [hma] submitting content gets stuck between "hashed" and "matched" HOT 2
- /matches/for-hash/ gives AttributeError: 'IndexMatchUntyped' object has no attribute 'distance' HOT 1
- [pytx] No match results if creating a local_file with only 1 hash in it HOT 1
- [hma] Size of hashkey has exceeded the maximum size limit of 2048 bytes HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from threatexchange.