# Determine if object is bezier circle curve?

I'm trying to modify my local copy of dynamic spacebar to include a "Snap to Curve Intersection" option on the "Snap Cursor Menu" starting with circle-circle intersections and circle-path intersections for straight paths that will snap the cursor to the closest intersection to its existing location. I've gotten as far as making a new menu option that only appears enabled when two curves are selected and broken out a separate curveIntersect function to encapsulate the whole thing but I'm having trouble finding a way to distinguish curve types.

So the questions here are:

Does anyone know how to determine curve types from within an addon, or are those only applied at the time of curve creation and all checks would have to be based on their vertices?

Is there already an addon that does this which might save time, or a function built into Blender to handle curve intersections that could be called to pick the from a list of vertices by distance from the existing cursor position? (so far I haven't found one anywhere in the API)

Worried I might have to go at this completely from scratch as my existing repository of c# functions for 2D geometry doesn't include bezier intersections I might port over to python.

bpy.data.curves['curve'].splines[0].type